別のスレッドでGPSを使用して現在の位置を取得する必要があります。次のコードバックグラウンドスレッドでGPS測位を開始するにはどうすればよいですか?
答えて
GPSは非同期に別のスレッドを呼び出す必要はありませんが、GPSは位置を取得する際にユーザーインターフェイスをフリーズしません。最適なのは、progressDialogを使用して、positionを取得した後にprogressDialogを閉じることです。
研究、
public class LocListener implements LocationListener {
private static double lat =0.0;
private static double lon = 0.0;
private static double alt = 0.0;
private static double speed = 0.0;
public static double getLat()
{
return lat;
}
public static double getLon()
{
return lon;
}
public static double getAlt()
{
return alt;
}
public static double getSpeed()
{
return speed;
}
@Override
public void onLocationChanged(Location location)
{
lat = location.getLatitude();
lon = location.getLongitude();
alt = location.getAltitude();
speed = location.getSpeed();
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
は今のスレッドでGPSを開始するため、このコードを使用します。
new Thread (new Runnable()
{
public void run()
{
locationManager = (LocationManager) getSystemService (Context.LOCATION_SERVICE);
locationListener = new LocListener();
locationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
}).start();
同じプロシージャを使用しましたが、エラーが発生しました.Looper.prepare()を呼び出さなかったスレッド内でハンドラを作成できません。 – DevAndroid
こんにちはArjun、いくつかのコードの書式を修正しました。正しく表示されます。 –
@DevAndroidあなたの質問にLogcatエラーを投稿してください。 –
private void turnGPSOn(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){ //if gps is disabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendBroadcast(poke);
}
}
private void turnGPSOff(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider.contains("gps")){ //if gps is enabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendBroadcast(poke);
}
}
- 1. Javaでメインスレッドをブロックしないバックグラウンドスレッドを開始するにはどうすればよいですか?
- 2. AndroidのGPS設定を開くにはどうすればよいですか?
- 3. Windowsでサブプロセスを開始するにはどうすればよいですか?
- 4. MDIでマウスイベントを開始するにはどうすればよいですか?
- 5. アンカータグでストライプクレジットカードチェックアウトを開始するにはどうすればよいですか?
- 6. webpackでプロダクションを開始するにはどうすればよいですか?
- 7. 角度4で単位テストを開始するにはどうすればよいですか?
- 8. アイドル状態の優先順位で.NETプロセスを開始するにはどうすればよいですか?
- 9. バックグラウンドスレッドでレトロフィットを実行するにはどうすればよいですか?
- 10. アプリトラッキングを開始するにはどうすればよいですか?
- 11. Android - 方法を開始するにはどうすればよいですか?
- 12. Hadoopのマップを開始するにはどうすればよいですか?
- 13. 継続タスクインスタンスを開始するにはどうすればよいですか?
- 14. ブルートゥースペアリングのプロセスを開始するにはどうすればよいですか?
- 15. Javaプログラミングを開始するにはどうすればよいですか?
- 16. アクティビティを開始するにはどうすればよいですか?
- 17. フラスコにバックグラウンドスレッドを追加するにはどうすればよいですか?
- 18. トグルの開始位置を変更するにはどうすればよいですか?
- 19. nsisのショートカットの開始位置を変更するにはどうすればよいですか?
- 20. D3 Forceの開始位置を追加するにはどうすればよいですか?
- 21. ASC3(ActionScript 3)フレームの開始時にリスニングを開始するにはどうすればよいですか?
- 22. wix:ProgressDlgでインストールプロセスを開始するにはどうすればいいですか?
- 23. ボタンクリックでGPS位置を取得するにはどうすればよいですか?
- 24. googleからGPS位置情報を取得するにはどうすればよいですか?
- 25. divの別の位置から開始するにはどうすればいいですか
- 26. カラーピケットダイアログを開始するにはどうすればいいですか?
- 27. 「電話サービス」(電話バンキングなど)の開発を開始するにはどうすればよいですか?
- 28. UBUNTU 9.04でCUDA開発を開始するにはどうすればよいですか?
- 29. AndroidでSkypeアプリケーション開発を開始するにはどうすればよいですか?
- 30. マルチスレッドアプリケーションでキャッシュパフォーマンスを測定するにはどうすればよいですか?
試したことはありますか? – BoltClock