この例を使用して位置情報ベースのアプリを開発しています: http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/
しかし、電話をオンにすると、その瞬間に場所が利用できなくなります。そのため、場所を待っている間に進行状況ダイアログを表示したいと思います。AsyncTask を使用してバックグラウンドでこれを行いたい。
どのように、どこでそれを行うのか、アイデアを教えていただけますか?
この例を使用して位置情報ベースのアプリを開発しています: http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/
しかし、電話をオンにすると、その瞬間に場所が利用できなくなります。そのため、場所を待っている間に進行状況ダイアログを表示したいと思います。AsyncTask を使用してバックグラウンドでこれを行いたい。
どのように、どこでそれを行うのか、アイデアを教えていただけますか?
ロケーションサービスはすでに別のプロセスで実行されているため、AsyncTask は必要ありません。実装しLocationListener
て再開メソッドに登録するだけで、onCreateActivity でロケーションが null かどうかを確認し、ロケーションProgressDialog
をonLocationChanged()
設定してロケーションを閉じます。ProgressDialog
locationListner インターフェイスを実装し、待機ダイアログのオーバーライド onlocation change メソッドを開始すると、ダイアログがキャンセルされます。
public class MainActivity extends Activity implement LocationListener{
ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//-------------------- Start your GPS Reading ------------------ //
dialog = new ProgressDialog(this);
dialog.setMessage("Please wait!");
dialog.show();
}
@Override
public void onLocationChanged(Location arg0) {
dialog.dismiss();
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
ProgressDialog を onPreExecute に配置します。サンプル コードは次のとおりです。
private ProgressDialog progressdialog;
@Override
protected void onPreExecute(){
super.onPreExecute();
progressdialog = new ProgressDialog(yourContext);
progressdialog.setMessage("Loading...");
progressdialog.show();
}
@Override
protected void onPostExecute(){
super.onPostExecute();
progressdialog.dismiss();
}