以下の①→③方法でアンドロイドアプリを起動した場合、強制終了されます。
①Android端末のGPS機能をオフにする。
②アプリケーションをインストール
③アプリケーション起動
GPSをONにした場合は問題なく起動できます。
マニュフェストファイルとメインアクティビティ上のGPS関連ソースは
以下の通りです。
GPSをオフにしたままのインストール→起動で強制終了を回避する方法が
わかる方がいたら御教授いただければ幸いです。
【マニュフェスト.xml】
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.CONTROL_LOCATION_UPADTES"/>
【メインアクティビティ.java】
getAPIData()の中で、getLocation()を呼んでいます。
// 現在位地からの緯度経路取得
private Map<String,Double> getAPIData() {
double latitude; double longitude; try { locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); // Criteriaオブジェクトを生成 Criteria criteria = new Criteria(); // Accuracyを指定(低精度) criteria.setAccuracy(Criteria.ACCURACY_COARSE); // PowerRequirementを指定(低消費電力) criteria.setPowerRequirement(Criteria.POWER_LOW); // ロケーションプロバイダの取得 String provider = locationManager.getBestProvider(criteria, true); locationManager.requestLocationUpdates(provider, 0, 0, onLocationUpdate); location = getLocation(); latitude = location.getLatitude(); longitude = location.getLongitude();
//////// //テストドライバ
// latitude = 35.678156;
// longitude = 139.705678;
////// //テストドライバエンド
locmap.put("latitude",latitude); locmap.put("longitude",longitude); }catch(Exception e) { return null; } return locmap; } //GPSによる緯度・経路取得 private Location getLocation() { Location lc = null; Location lcgps = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); Location lcnet = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if(mylocation != null) { lc = mylocation; }else if(lcgps != null) { lc = lcgps; }else if(lcnet != null) { lc = lcnet; } return lc; } private LocationListener onLocationUpdate = new LocationListener() { public void onLocationChanged(Location location) { mylocation = location; } public void onProviderDisabled(String provider) { } public void onProviderEnabled(String provider) { } public void onStatusChanged(String provider, int status, Bundle extras) { } };
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/01 07:51