Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中使用gps提供商和网络提供商提供的最新已知位置获取纬度和经度时出错_Android_Google Maps_Gps_Latitude Longitude - Fatal编程技术网

在android中使用gps提供商和网络提供商提供的最新已知位置获取纬度和经度时出错

在android中使用gps提供商和网络提供商提供的最新已知位置获取纬度和经度时出错,android,google-maps,gps,latitude-longitude,Android,Google Maps,Gps,Latitude Longitude,我想从网络提供商和gps提供商处获取最后一个已知位置。因此,我在java应用程序中编写了以下代码 import com.google.android.gms.location.LocationClient; import android.location.LocationListener; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.maps.GoogleMap; i

我想从网络提供商和gps提供商处获取最后一个已知位置。因此,我在java应用程序中编写了以下代码

import com.google.android.gms.location.LocationClient;
import android.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.maps.GoogleMap;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.google.android.gms.maps.MapFragment;
public class Map extends Activity implements LocationListener{

private GoogleMap googleMap;
  // Update frequency in seconds
public static final int UPDATE_INTERVAL_IN_SECONDS = 5;
// Define an object that holds accuracy and frequency parameters
LocationRequest mLocationRequest;
LocationClient mLocationClient;
boolean mUpdatesRequested;
double clat,clong,gpslat,gpslong,netlat,netlong;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    try {
        // Loading map
        initilizeMap();

    } catch (Exception e) {
        e.printStackTrace();
    }
    Location gps,network;
    LocationManager locationmanager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
    LocationListener locationlistener=new LocationListener() {

        @Override
        public void onLocationChanged(Location arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStatusChanged(String provider, int status,
                Bundle extras) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub

        }
    };
    locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationlistener);


    gps=locationmanager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    network=locationmanager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    Double gpslat,gpslong,netlat,netlong;
    gpslat=gps.getLatitude();
    gpslong=gps.getLongitude();
    netlat=network.getLatitude();
    netlong=network.getLongitude();

    /*MarkerOptions marker = new MarkerOptions().position(new LatLng(gpslat, gpslong)).title("Gps location ");
    MarkerOptions marker1=new MarkerOptions().position(new LatLng(netlat, netlong)).title("Network Location");
    googleMap.addMarker(marker);
    googleMap.addMarker(marker1);*/

    // create marker
    //MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Hello Maps ");


    // adding marker
    //googleMap.addMarker(marker);

    //CameraPosition cameraPosition = new CameraPosition.Builder().target(
     //       new LatLng(latitude, longitude)).zoom(15).build();

//googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));


}

private void initilizeMap() {
    if (googleMap == null) {
        googleMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();

        // check if map is created successfully or not
        if (googleMap == null) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                    .show();
        }
    }
}

@Override
protected void onResume() {
    super.onResume();
    initilizeMap();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.map, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onLocationChanged(Location arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}



}
但应用力关闭,并在logcat中显示如下错误:

09-20 12:05:14.350: I/Google Maps Android API(12062): Google Play services client version: 5089000
09-20 12:05:14.350: I/dalvikvm(12062): Could not find method gui.a, referenced from method gqh.a
09-20 12:05:14.350: W/dalvikvm(12062): VFY: unable to resolve static method 24934: Lgui;.a (Landroid/content/Context;)Lgrh;
09-20 12:05:14.350: D/dalvikvm(12062): VFY: replacing opcode 0x71 at 0x0003
09-20 12:05:14.360: E/dalvikvm(12062): Could not find class 'gpq', referenced from method gpr.a
09-20 12:05:14.360: W/dalvikvm(12062): VFY: unable to resolve new-instance 4090 (Lgpq;) in Lgpr;
09-20 12:05:14.360: D/dalvikvm(12062): VFY: replacing opcode 0x22 at 0x0000
09-20 12:05:14.360: E/dalvikvm(12062): Could not find class 'gpq', referenced from method gpr.a
09-20 12:05:14.360: W/dalvikvm(12062): VFY: unable to resolve new-instance 4090 (Lgpq;) in Lgpr;
09-20 12:05:14.360: D/dalvikvm(12062): VFY: replacing opcode 0x22 at 0x0000
09-20 12:05:14.360: E/dalvikvm(12062): Could not find class 'gpq', referenced from method gpr.a
09-20 12:05:14.360: W/dalvikvm(12062): VFY: unable to resolve new-instance 4090 (Lgpq;) in Lgpr;
09-20 12:05:14.360: D/dalvikvm(12062): VFY: replacing opcode 0x22 at 0x0000
09-20 12:05:14.360: D/dalvikvm(12062): DexOpt: unable to opt direct call 0x5ea1 at 0x0a in Lgpr;.a
09-20 12:05:14.360: D/dalvikvm(12062): DexOpt: unable to opt direct call 0x5ea1 at 0x0c in Lgpr;.a
09-20 12:05:14.360: D/dalvikvm(12062): DexOpt: unable to opt direct call 0x5ea1 at 0x0a in Lgpr;.a
09-20 12:05:14.370: I/Google Maps Android API(12062): Google Play services package version: 5089070
09-20 12:05:14.380: W/dalvikvm(12062): VFY: unable to resolve static field 20875 (t) in Lyo;
09-20 12:05:14.380: D/dalvikvm(12062): VFY: replacing opcode 0x62 at 0x000e
09-20 12:05:14.390: W/dalvikvm(12062): VFY: unable to resolve static field 20875 (t) in Lyo;
09-20 12:05:14.390: D/dalvikvm(12062): VFY: replacing opcode 0x62 at 0x000d
09-20 12:05:14.550: I/dalvikvm(12062): JIT_INFO: Unresolved fieldPtr at sget_sput_common
09-20 12:05:14.550: I/dalvikvm(12062): Could not compile trace for Lohs;<clinit>, offset 9
09-20 12:05:14.550: D/dalvikvm(12062): ++++++++++++++++++++++++++++++++++++++++++++
09-20 12:05:14.550: D/dalvikvm(12062): JIT_INFO: Issues while compiling trace  Lohs;<clinit>, offset 9
09-20 12:05:14.550: D/dalvikvm(12062):  Trace contains SGET / SPUT bytecode with unresolved field.
09-20 12:05:14.550: D/dalvikvm(12062): JIT_INFO: Terminating trace due to unresolved issues
09-20 12:05:14.550: D/dalvikvm(12062): ++++++++++++++++++++++++++++++++++++++++++++
09-20 12:05:14.560: W/ActivityThread(12062): ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());
09-20 12:05:14.590: I/dalvikvm(12062): Failed resolving Lcom/google/android/gms/location/internal/ParcelableGeofence; interface 4023 'Lglm;'
09-20 12:05:14.590: W/dalvikvm(12062): Link of class 'Lcom/google/android/gms/location/internal/ParcelableGeofence;' failed
09-20 12:05:14.590: E/dalvikvm(12062): Could not find class 'com.google.android.gms.location.internal.ParcelableGeofence', referenced from method gls.a
09-20 12:05:14.590: W/dalvikvm(12062): VFY: unable to resolve check-cast 2086 (Lcom/google/android/gms/location/internal/ParcelableGeofence;) in Lgls;
09-20 12:05:14.590: D/dalvikvm(12062): VFY: replacing opcode 0x1f at 0x0019
09-20 12:05:14.700: D/dalvikvm(12062): GC_FOR_ALLOC freed 5073K, 37% free 9468K/14820K, paused 9ms, total 9ms
09-20 12:05:14.720: D/AndroidRuntime(12062): Shutting down VM
09-20 12:05:14.720: W/dalvikvm(12062): threadid=1: thread exiting with uncaught exception (group=0x42ede500)
09-20 12:05:14.720: E/AndroidRuntime(12062): FATAL EXCEPTION: main
09-20 12:05:14.720: E/AndroidRuntime(12062): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.barcodescanner/com.example.barcodescanner.Map}: java.lang.NullPointerException
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2250)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2300)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.app.ActivityThread.access$600(ActivityThread.java:144)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1295)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.os.Looper.loop(Looper.java:150)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.app.ActivityThread.main(ActivityThread.java:5162)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at java.lang.reflect.Method.invokeNative(Native Method)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at java.lang.reflect.Method.invoke(Method.java:525)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:744)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at dalvik.system.NativeStart.main(Native Method)
09-20 12:05:14.720: E/AndroidRuntime(12062): Caused by: java.lang.NullPointerException
09-20 12:05:14.720: E/AndroidRuntime(12062):    at com.example.barcodescanner.Map.onCreate(Map.java:77)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.app.Activity.performCreate(Activity.java:5288)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-20 12:05:14.720: E/AndroidRuntime(12062):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2214)
09-20 12:05:14.720: E/AndroidRuntime(12062):    ... 11 more
09-20 12:05:14.350:I/Google地图Android API(12062):Google Play services客户端版本:5089000
09-20 12:05:14.350:I/dalvikvm(12062):找不到从方法gqh.a引用的方法gui.a
09-20 12:05:14.350:W/dalvikvm(12062):VFY:无法解析静态方法24934:Lgui;。a(Landroid/content/Context;)Lgrh;
09-20 12:05:14.350:D/dalvikvm(12062):VFY:在0x0003处替换操作码0x71
09-20 12:05:14.360:E/dalvikvm(12062):找不到从方法gpr.a引用的类“gpq”
09-20 12:05:14.360:W/dalvikvm(12062):VFY:无法解析Lgpr中的新实例4090(Lgpq;);
09-20 12:05:14.360:D/dalvikvm(12062):VFY:在0x0000处替换操作码0x22
09-20 12:05:14.360:E/dalvikvm(12062):找不到从方法gpr.a引用的类“gpq”
09-20 12:05:14.360:W/dalvikvm(12062):VFY:无法解析Lgpr中的新实例4090(Lgpq;);
09-20 12:05:14.360:D/dalvikvm(12062):VFY:在0x0000处替换操作码0x22
09-20 12:05:14.360:E/dalvikvm(12062):找不到从方法gpr.a引用的类“gpq”
09-20 12:05:14.360:W/dalvikvm(12062):VFY:无法解析Lgpr中的新实例4090(Lgpq;);
09-20 12:05:14.360:D/dalvikvm(12062):VFY:在0x0000处替换操作码0x22
09-20 12:05:14.360:D/dalvikvm(12062):DexOpt:无法在Lgpr;中的0x0a处选择直接呼叫0x5ea1;。A.
09-20 12:05:14.360:D/dalvikvm(12062):DexOpt:无法在Lgpr;中的0x0c处选择直接呼叫0x5ea1;。A.
09-20 12:05:14.360:D/dalvikvm(12062):DexOpt:无法在Lgpr;中的0x0a处选择直接呼叫0x5ea1;。A.
09-20 12:05:14.370:I/Google地图Android API(12062):Google Play服务包版本:5089070
09-20 12:05:14.380:W/dalvikvm(12062):VFY:无法解析Lyo中的静态场20875(t);
09-20 12:05:14.380:D/dalvikvm(12062):VFY:在0x000e处替换操作码0x62
09-20 12:05:14.390:W/dalvikvm(12062):VFY:无法解析Lyo中的静态场20875(t);
09-20 12:05:14.390:D/dalvikvm(12062):VFY:在0x000d处替换操作码0x62
09-20 12:05:14.550:I/dalvikvm(12062):JIT_信息:sget_sput_公共现场未解决现场PTR
09-20 12:05:14.550:I/dalvikvm(12062):无法为LOH编译跟踪;,偏移量9
09-20 12:05:14.550:D/dalvikvm(12062):++++++++++++++++++++++++++++++++++++++++++++
09-20 12:05:14.550:D/dalvikvm(12062):JIT_信息:编译跟踪LOH时出现问题;,偏移量9
09-20 12:05:14.550:D/dalvikvm(12062):跟踪包含带有未解析字段的SGET/SPUT字节码。
09-20 12:05:14.550:D/dalvikvm(12062):JIT_信息:由于未解决的问题而终止跟踪
09-20 12:05:14.550:D/dalvikvm(12062):++++++++++++++++++++++++++++++++++++++++++++
09-20 12:05:14.560:W/ActivityThread(12062):ClassLoader.loadClass:线程返回的类加载器。对于承载多个应用程序的进程,getContextClassLoader()可能会失败。您应该显式指定上下文类加载器。例如:Thread.setContextClassLoader(getClass().getClassLoader());
09-20 12:05:14.590:I/dalvikvm(12062):无法解析Lcom/google/android/gms/location/internal/ParcelableGeofence;接口4023'Lglm;'
09-20 12:05:14.590:W/dalvikvm(12062):类链接“Lcom/google/android/gms/location/internal/ParcelableGeofence;”失败
09-20 12:05:14.590:E/dalvikvm(12062):找不到从方法gls.a引用的类“com.google.android.gms.location.internal.ParcelableGeofence”
09-20 12:05:14.590:W/dalvikvm(12062):VFY:无法解析Lgls中的check cast 2086(Lcom/google/android/gms/location/internal/ParcelableGeofence;);
09-20 12:05:14.590:D/dalvikvm(12062):VFY:在0x0019处替换操作码0x1f
09-20 12:05:14.700:D/dalvikvm(12062):释放5073K的所有物质的GC_,37%释放9468K/14820K,暂停9ms,总计9ms
09-20 12:05:14.720:D/AndroidRuntime(12062):关闭虚拟机
09-20 12:05:14.720:W/dalvikvm(12062):threadid=1:线程以未捕获异常退出(组=0x42ede500)
09-20 12:05:14.720:E/AndroidRuntime(12062):致命异常:主
09-20 12:05:14.720:E/AndroidRuntime(12062):java.lang.RuntimeException:无法启动活动组件信息{com.example.barcodescanner/com.example.barcodescanner.Map}:java.lang.NullPointerException
09-20 12:05:14.720:E/AndroidRuntime(12062):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2250)
09-20 12:05:14.720:E/AndroidRuntime(12062):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2300)
09-20 12:05:14.720:E/AndroidRuntime(12062):在android.app.ActivityThread.access$600(ActivityThread.java:144)
09-20 12:05:14.720:E/AndroidRuntime(12062):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1295)
09-20 12:05:14.720:E/AndroidRuntime(12062):在android.os.Handler.dispatchMessage(Handler.java:99)上
09-20 12:05:14.720:E/AndroidRuntime(12062):在android.os.Looper.loop(Looper.java:150)上
09-20 12:05:14.720:E/AndroidRuntime(12062):位于android.app.ActivityThread.main(ActivityThread.java:5162)
09-20 12:05:14.720:E/AndroidRuntime(12062):位于java.lang.reflect.Method.Invokenactive(本机方法)
09-20 12:05:14.720:E/AndroidRuntime(12062):位于java.lang.reflect.Method.invoke(Method.java:525)
09-20 12:05:14.720:E/AndroidRuntime(12062):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:744)
09-20 12:05:14.720:E/AndroidRuntime(12062):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-20 12:05:14.720:E/AndroidRuntime(12062):在dalvik.system.NativeStart.main(本机方法)
09-20 12:05:14.720:E/AndroidRuntime(12062):由以下原因引起:java.lang.NullPointerException
09-20 12:05:14.720:E/AndroidRuntime(12062):位于com.example.barcodescanner.Map.onCreate(Map.java:77)
09-20 12:05:14.720:E/AndroidRuntime(12062):在和
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>


</RelativeLayout>
boolean isGPSEnabled = false;
boolean isNetworkEnabled = false;
protected LocationManager locationManager;
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; 
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; 
try 
    {
        LocationManager locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
        // getting GPS status
        isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        // getting network status
        isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        if (!isGPSEnabled && !isNetworkEnabled) 
        {
            Log.e(Tag,"Both services not available");
        }
        else 
        {
            Criteria criteria = new Criteria();
            criteria.setAccuracy(Criteria.ACCURACY_FINE);
            criteria.setBearingAccuracy(Criteria.ACCURACY_FINE);

            this.canGetLocation = true;
            if (isNetworkEnabled) 
            {
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, locationListener);
                if (locationManager != null) 
                {
                        location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) 
                        {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                            Log.e("latitude:","Network lat:"+latitude+" lng:"+longitude);
                        }
                        else
                        {
                            Log.e(Tag,"network based location is null");
                        }
                    }
                }
            }
            // if GPS Enabled get lat/long using GPS Services
            if (isGPSEnabled) 
            {
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, locationListener);
                    if (locationManager != null) 
                    {
                        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        if (location != null) 
                        {
                            latitude = location.getLatitude();                      
                            longitude = location.getLongitude();
                            //Appconstants.gps_turnon=true;

                            Log.e("latitude:","gprs lat:"+latitude+" lng:"+longitude);
                        }
                        else
                        {
                            Log.e(Tag,"Location can't find by gps");
                        }
                    }
            }}
          catch(Exception e){e.printStackTrace();}