Android用のGPSベースのアプリを開発しました。アプリは他のすべてのデバイスで正常に動作しますが、ロケーション リスナーは Galaxy Note 2 デバイスで失敗します。
GPS を有効にする:
if (locationManager == null) {
locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
}
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
&& !locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
_objSLM.isGPSEnable = false;
}
startService(new Intent(this, SLGPSService.class));
リスナーの接続:
if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 100, locationListener);
}
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 100, locationListener);
}
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
&& !locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
try {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 100,
locationListener);
} catch (Exception e) {
}
try {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 100, locationListener);
} catch (Exception e) {
}
}
ロケーションリスナー:
LocationListener locationListener = new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.v(TAG, "**********=======Status=" + status);
}
public void onProviderEnabled(String provider) {
// _objSLM.isGPSEnable = true;
if (locationManager.isProviderEnabled(provider)) {
if (locationManager.getLastKnownLocation(provider) != null) {
_objSLM.curLocation = locationManager
.getLastKnownLocation(provider);
_objSLM.isGPSEnable = true;
if (_objSLM.prevLocation == null) {
_objSLM.prevLocation = _objSLM.curLocation;
}
}
}
if (locationManager.isProviderEnabled(provider)) {
if (locationManager.getLastKnownLocation(provider) != null) {
_objSLM.curLocation = locationManager.getLastKnownLocation(provider);
_objSLM.isGPSEnable = true;
if (_objSLM.prevLocation == null) {
_objSLM.prevLocation = _objSLM.curLocation;
}
}
}
}
public void onProviderDisabled(String provider) {
_objSLM.isGPSEnable = false;
}
public void onLocationChanged(Location location) {
Log.v(TAG, location.getLatitude() + "==" + location.getLongitude()+=================onLocationChanged()");
if(location.getProvider().equals(LocationManager.GPS_PROVIDER)){
_objSLM.curLocation = location;
_objSLM.isGPSEnable = true;
}
if (_objSLM.prevLocation == null) {
_objSLM.prevLocation = _objSLM.curLocation;
}
}
};
権限 :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />