4

我正在使用 Google Maps v2,我想确定我的位置。我使用 Genymotion 模拟器。我需要在我的测试设备上激活 GPS。如果我在模拟器上进行测试,并且如果我尝试使用 LocationManager,它没有被激活“null”。我正在使用 Eclipse 的“DDMS”透视图将地理位置发送到模拟器。Window → Open Perspective → Other... → DDMS。但所有字段都不可点击。

我按照 Breadbin 所说的做了,但我仍然有空指针异常 在此处输入图像描述

`

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    map=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
    map.setMyLocationEnabled(true);
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String provider =  locationManager.getBestProvider(criteria, true);
    Location myLocation = locationManager.getLastKnownLocation(provider);
    map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    double latitude = myLocation.getLatitude();
    double longitude = myLocation.getLongitude();
    LatLng latLng = new LatLng(latitude, longitude);
    map.moveCamera(CameraUpdateFactory.newLatLng(latLng));
    map.animateCamera(CameraUpdateFactory.zoomTo(20));
    map.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("You are here"));
    }`
11-20 04:28:48.056: D/dalvikvm(1645): GC_FOR_ALLOC 释放 226K,2% 释放 16823K/17076K,暂停 7ms,总共 7ms
11-20 04:28:48.332: D/dalvikvm(1645): GC_FOR_ALLOC 释放 309K,2% 释放 17029K/17364K,暂停 7ms,总共 7ms
11-20 04:28:48.412: D/dalvikvm(1645): GC_FOR_ALLOC 释放 260K,2% 释放 17282K/17568K,暂停 6ms,总共 6ms
11-20 04:28:48.496: D/dalvikvm(1645): GC_FOR_ALLOC 释放 109K,2% 释放 17546K/17784K,暂停 10ms,总共 10ms
11-20 04:28:48.540: D/dalvikvm(1645): GC_FOR_ALLOC 释放 28K,1% 释放 17906K/18084K,暂停 6ms,总共 6ms
11-20 04:28:48.540: D/AndroidRuntime(1645): 关闭 VM
11-20 04:28:48.540: W/dalvikvm(1645): threadid=1: 线程以未捕获的异常退出 (group=0xa4c49648)
11-20 04:28:48.544: E/AndroidRuntime(1645): 致命异常: main
11-20 04:28:48.544: E/AndroidRuntime(1645): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.Mymaps/com.example.Mymaps.MainActivity}: java.lang.NullPointerException
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.access$600(ActivityThread.java:141)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.os.Handler.dispatchMessage(Handler.java:99)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.os.Looper.loop(Looper.java:137)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.main(ActivityThread.java:5103)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 java.lang.reflect.Method.invokeNative(Native Method)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 java.lang.reflect.Method.invoke(Method.java:525)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-20 04:28:48.544: E/AndroidRuntime(1645): at dalvik.system.NativeStart.main(Native Method)
11-20 04:28:48.544:E/AndroidRuntime(1645):由:java.lang.NullPointerException 引起
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 com.example.Mymaps.MainActivity.onCreate(MainActivity.java:33)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.Activity.performCreate(Activity.java:5133)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-20 04:28:48.544: E/AndroidRuntime(1645): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
11-20 04:28:48.544: E/AndroidRuntime(1645): ... 11 更多
11-20 04:28:48.840: W/ActivityThread(1645): ClassLoader.loadClass: Thread.getContextClassLoader() 返回的类加载器对于托管多个应用程序的进程可能会失败。您应该明确指定上下文类加载器。例如:Thread.setContextClassLoader(getClass().getClassLoader());
11-20 04:45:28.501: W/ActivityThread(3967): ClassLoader.loadClass: Thread.getContextClassLoader() 返回的类加载器对于托管多个应用程序的进程可能会失败。您应该明确指定上下文类加载器。例如:Thread.setContextClassLoader(getClass().getClassLoader());
4

2 回答 2

2

如果您使用的是 genymotion,您可以使用 genymotion 设置模拟位置。即模拟器侧面有一个按钮,您可以在其中打开 GPS 并在地图上设置精度和模拟位置

于 2013-11-19T20:27:35.347 回答
-1

确保在“设备”视图中选择了该设备。除非选择了设备或仿真器,否则您不能使用仿真器控制。

如果它不起作用,则关闭 Eclipse,在您安装 Android SDK 的任何位置的 tools/ 目录中都有一个 ddms shell 脚本。

如果仍然不起作用,请运行 adb kill-server,然后运行 ​​adb start-server,其中 adb 应该位于 SDK 安装的 platform-tools/ 目录中。然后,再次尝试 DDMS。

如果这没有帮助,请重新启动,然后再次尝试 DDMS。

于 2013-11-19T18:04:03.953 回答