小编Ral*_*alf的帖子

使用抽象类而不是特征有什么好处?

使用抽象类而不是特性(除了性能)有什么好处?在大多数情况下,似乎抽象类可以被特征替换.

scala traits

362
推荐指数
6
解决办法
9万
查看次数

ScrollView中的MapFragment

我有一个新的MapFragments ScrollView.实际上它是一个SupportMapFragment,但无论如何.它有效,但有两个问题:

  1. 滚动时,会留下黑色面具.黑色完全覆盖了地图所在的区域,除了+/-缩放按钮所在的孔.见下面的截图.这是在Android 4.0上.

  2. requestDisallowInterceptTouchEvent()当用户与地图交互以防止ScrollView拦截触摸时,视图不会使用,因此如果您尝试在地图中垂直平移,则只会滚动包含ScrollView.理论上我可以派生一个视图类MapView并添加该功能,但是如何才能MapFragment使用我的自定义MapView而不是标准的?

滚动问题的部分截图

android google-maps android-mapview google-play-services

53
推荐指数
4
解决办法
2万
查看次数

Android布局占位符,用于动态添加视图

在我的Android Activity中,我需要在布局中的特定位置动态地(在运行时)添加单个View.要添加的视图在运行时确定.例如,布局可能看起来像这样:

<LinearLayout ...>
    <TextView ... />
    <!-- Dynamic item to be added here -->
    <TextView ... />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

一种解决方案是使用layout.addView(view, index),但我不想硬编码索引.

另一种解决方案是使用FrameLayout作为占位符,并在FrameLayout内放置动态视图,例如:

<LinearLayout ...>
    <TextView ... />
    <FrameLayout android:id="@+id/placeholder" />
    <TextView ... />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

然后:

findViewById(R.id.placeholder).addView(view);
Run Code Online (Sandbox Code Playgroud)

但是,这会在层次结构中添加不必要的视图.

建议的方法是什么?

android android-layout

22
推荐指数
2
解决办法
2万
查看次数

Android上的相机示例

我想写一个活动:

  1. 显示相机预览(取景器),并具有"捕获"按钮.
  2. 按下"捕获"按钮时,拍摄照片并将其返回到调用活动(setResult()&finish()).

是否有适用于每台设备的完整示例?链接到一个简单的开源应用程序拍照将是理想的答案.


我的研究到目前为止:

这是一个常见的场景,有很多问题和教程.

主要有两种方法:

  1. 使用android.provider.MediaStore.ACTION_IMAGE_CAPTURE事件.看到这个问题
  2. 直接使用Camera API.请参阅此示例此问题(包含大量参考).

方法1本来是完美的,但问题是每个设备上的意图实现不同. 在某些设备上它运作良好.但是,在某些设备上,您可以拍照,但它永远不会返回到您的应用.在某些设备上,启动意图时没有任何反应.通常它还将图像保存到SD卡,并且需要存在SD卡.每个设备上的用户交互也不同.

方法2的问题是稳定性.我尝试了一些例子,但我设法阻止相机在某些设备上工作(直到重启)并完全冻结另一台设备.在另一台设备上捕捉工作,但预览保持黑色.

我会使用ZXing作为示例应用程序(我经常使用它),但它只使用预览(取景器),并且不拍任何照片.我还发现,在某些设备上,ZXing在光照条件改变时没有自动调整白平衡,而原生相机应用程序正确地做到了(不确定是否可以修复).


更新:

有一段时间我直接使用了相机API.这提供了更多控制(自定义UI等),但我不建议任何人.我会在90%的设备上工作,但是每次都会发布一个新的设备,但是会遇到不同的问题.

我遇到的一些问题:

  • 处理自动对焦
  • 处理闪光灯
  • 带前置摄像头,后置摄像头或两者的支持设备
  • 每个设备都有不同的屏幕分辨率,预览分辨率(并不总是与屏幕分辨率匹配)和图像分辨率的组合.

所以一般来说,除非没有别的办法,否则我不建议去这条路线.两年后,我通过自定义代码转储并切换回基于Intent的方法.从那时起,我的麻烦就少了很多.我过去在基于意图的方法中遇到的问题可能只是我自己的无能.

如果你真的需要走这条路,我听说如果你只支持Android 4.0+的设备会更容易.

camera android android-camera android-camera-intent

19
推荐指数
1
解决办法
4万
查看次数

使用Android Studio在模拟器中设置GPS位置

在eclipse中,您可以使用以下方法为模拟器设置GPS位置:

选择Window> Show View> Other> Emulator Control.

在"模拟器控制"面板中,在"位置控件"下输入GPS坐标作为单独的纬度/经度坐标,使用GPX文件进行路径回放,或输入多个位置标记的KML文件.(确保在"设备"面板中选择了一个设备 - 可从"窗口">"显示视图">"其他">"设备"中获取.)

这在Android工作室有可能吗?

android android-emulator android-studio

19
推荐指数
3
解决办法
6万
查看次数

如何在Travis CI上获得干净的Gradle输出?

使用Gradle在Travis CI上进行正常构建的示例输出:

https://travis-ci.org/2m/gradle-travis-test/builds/8579228

Gradle似乎认为控制台具有与普通ANSI控制台相同的功能,而实际上它只支持其中一些功能.具体来说,它似乎支持颜色,但不支持更新/替换文本(它只是附加).

如何告诉Gradle使用"普通"控制台输出?

gradle travis-ci

15
推荐指数
2
解决办法
2896
查看次数

禁用特定方法/类的Java JIT?

我在Java应用程序中遇到问题,JIT破坏了代码.如果我禁用JIT,一切正常,但运行速度慢10-20倍.

有没有办法为特定方法或类禁用JIT?

编辑:我正在使用Ubuntu 10.10,获得相同的结果:

OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1)
OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode)
Run Code Online (Sandbox Code Playgroud)

和:

Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java jit jvm jvm-hotspot

9
推荐指数
2
解决办法
6181
查看次数

与ViewPager一样在Android活动之间滑动

在我的Android应用程序中,我有两个独立但相关的顶级屏幕/活动.我希望为它们提供两个单独的启动器图标,但允许用户在它们之间"滑动",就像使用ViewPager一样.

我看到的选项是:

  1. 实现两个单独的活动,并以某种方式允许在它们之间滑动.问题是ViewPager不能与两个单独的活动一起使用.

  2. 使用两个片段实现单个活动,并使用ViewPager在它们之间切换.滑动很简单,但是有可能有两个发射器自动切换到正确的片段吗?

以上两种选择中的任何一种都是可行的,还是我可以尝试其他的东西?

android android-viewpager

6
推荐指数
1
解决办法
1万
查看次数

MongoDB查询使用嵌入式文档作为关键

精简版:

如果我有索引{"category": 1}和文档{"category": {type: "memory", class: "DDR400"},我该如何进行查询,例如{"category.type": "memory"}使用我的索引?

长版:

使用MongoDB,我想使用嵌入式文档作为索引的键.

例如,我可能有一些这样的文档(对于假设的产品数据库):

{"category": {"type": "hard-drive", "form_factor": "2.5in", "size": "500GB"}, ...}
{"category": {"type": "hard-drive", "form_factor": "3.5in", ...}, ...}
{"category": {"type": "memory", "class": "DDR400", ...}, ...}
Run Code Online (Sandbox Code Playgroud)

对于上面的示例,我可能想要执行以下查询:

{"category.type": "hard-drive"}
{"category.type": "hard-drive", "category.form_factor": "2.5in"}
{"category.type": "memory"}
{"category.type": "memory", "category.class": "DDR400"}
Run Code Online (Sandbox Code Playgroud)

我的问题是创建一个索引.http://www.mongodb.org/display/DOCS/Indexes#Indexes-DocumentsasKeys上的文档描述了两个选项:

例如,第一个选项是创建复合索引{ "category.type": 1, "category.class": 1 }.这对我的情况不适用,因为我可能有许多不同类型的子类别.

第二种选择是使用文档作为关键:{ "category": 1 }.现在一个查询,如{"category": {"type": "memory", "class": "DDR400"}}将使用索引,但{"category": {"type": "memory"}}不会返回任何内容,{"category.type": …

mongodb

5
推荐指数
1
解决办法
1394
查看次数

Android GPS跟踪和WakeLock

我需要在Android手机上进行背景GPS跟踪,我目前正计划有两种情况:

  1. 当手机连接到(车载)充电器时,可以获得频繁的GPS位置(每分钟).
  2. 当手机未连接充电器时,每5-30分钟仅轮询一次,具体取决于电池受影响的程度.

我知道我需要在服务中实现跟踪,并且可能会显示通知以使服务保持活动状态.但是,我认为手机可能随时进入睡眠模式,这将阻止GPS跟踪.

对于这些情况,在没有电话进入睡眠状态且不耗尽太多电量的情况下,连续背景GPS跟踪的最佳方法是什么?

到目前为止我收集了以下内容:

对于场景1,我可能需要获取一个WakeLock,并始终保持CPU唤醒(但屏幕可能会睡眠).MyTracks应用程序似乎在TrackRecordingService中执行此操作.OpenGPSTracking似乎也是如此.

对于方案2,我可以使用AlarmManager每隔x分钟安排一次检查.我的服务需要获取一个临时的WakeLock,等待一个GPS位置,然后停止并再次释放WakeLock.

这两种方法的电源使用情况如何比较(永久WakeLock vs AlarmManager)?只检查每30分钟,GPS能否在合理的时间内收到准确的位置?

StackOverflow上有一些相关的问题,但没有一个有令人满意的答案.一些半有用的:

gps android wakelock

5
推荐指数
2
解决办法
6840
查看次数

从电子邮件中猜出姓名

是否有一种标准或简单的方法来猜测电子邮件地址中的名称,类似于gmail的名称?

例如,"john.smith@whoever.com"应该给"John Smith".

这样做不应该太难(剥离域名,删除特殊字符,大写等),但我确信应该有现有的代码.

Ruby中的代码是首选,但任何其他语言都可以.

ruby

4
推荐指数
1
解决办法
1578
查看次数

为Rails功能测试指定主机

我的一些控制器操作在其逻辑中使用request.host参数.在集成测试中,我可以使用该host!方法来设置主机.如何在功能测试中实现同样的目标?

testing ruby-on-rails

4
推荐指数
1
解决办法
2855
查看次数

好的Ruby shell?

对于Python,我使用PyCrust,这是一个很好的图形shell,感觉就像一个好的Java IDE(具有自动完成,内联文档并可以保存历史记录).

Ruby有什么类似的吗?

ruby

1
推荐指数
1
解决办法
1083
查看次数