在Android 2.2仿真器上,"geo fix"命令似乎无法正常工作.模拟器响应"OK",并onLocationChanged()在我的程序中正确调用.然而,Location对象似乎并不完整 - 它可以很好地记录纬度和经度,但它不包含高度读数:hasAltitude()返回false.
有什么想法吗?
示例模拟器命令:
geo fix -74 40.75 500
geo fix -77 39 400.0
Run Code Online (Sandbox Code Playgroud)
代码段:
public void onLocationChanged(Location loc) {
System.out.println("onLocationChanged Called");
if (loc.hasAltitude()) {
double newalt = loc.getAltitude();
System.out.println("new altitude: " + newalt);
gps[ALTITUDE] = newalt;
} else {
System.out.println("No altitude fix");
}
gps[LONG] = loc.getLongitude();
System.out.println(gps[LONG]);
gps[LAT] = loc.getLatitude();
System.out.println(gps[LAT]);
}
Run Code Online (Sandbox Code Playgroud)
样本输出:
onLocationChanged Called
No altitude fix
-74.012333333333333333
40.756666666666666667
onLocationChanged Called
No altitude fix
-77.012833333333333335
39.006499999999999996
Run Code Online (Sandbox Code Playgroud) 在Motorola Droid上,Firmware 2.1-update1,Kernel 2.9.29-omap1,Build#ESE81
在尝试拍照时,mediaserver会因分段错误而死亡.
我已经尝试放入takePicture计时器并在相机初始化后几秒钟运行它以检查竞争条件,但没有变化.只是打电话Camera.open()不会导致崩溃.此外,呼叫Camera.open()
导致我认为自动对焦马达产生一种滴答声.
破解的代码:
import android.app.Activity;
import android.os.Bundle;
public final class ChopperMain extends Activity {
public void onCreate(Bundle savedInstanceState) {
try {
Camera camera = Camera.open();
catch (Exception e) {
e.printStackTrace();
}
camera.takePicture(
new Camera.ShutterCallback() {
public void onShutter() {
;
}
},
new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
;
}
},
new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
;
}
},
new PictureCallback() …Run Code Online (Sandbox Code Playgroud)