0

リスナーに基づいてバックグラウンドでアクティブ化されるアプリケーションを開発しています。アプリケーションでは、ユーザーの現在地 (住所) をキャプチャして保存したいと考えています。

以下のコードでは、Wi-Fi に接続しているときにアプリケーションが問題なく動作します。Wi-Fi に接続していない場合、「address=gps.getAddress();」の行で何かが発生します。変数 pendingResponse が false に設定されていることを投稿します。コンソールで 2 番目の log.d の出力すら得られません (Log.d("Your Location",address);

getAddress は、緯度と経度を使用して逆ジオコーディングし、住所を取得する単純な関数です。Wi-Fi を使用していないときに低速のインターネット接続を使用しているため、getAddress の呼び出しの処理に時間がかかり、その結果、この状況で立ち往生していると想定しています。

誰かがさらに先に進む方法を教えてください。

private class BgTask extends AsyncTask<String, Integer, String> {



@Override
protected void onPreExecute() {
   super.onPreExecute();
   gps = new GPSTracker(context);
}

@Override
protected String doInBackground(String... params) {
   String url=params[0];     

   // check GPS location
   if (gps.canGetLocation()) {
       Log.d("Your Location", "latitude:" + gps.getLatitude() + ", longitude: " + gps.getLongitude());
       address=gps.getAddress();
       Log.d("Your Location",address);
       responsePending=true;
   } else {        
       Log.d("Your Location"," Location Not Available");           
   }      

   return "All Done!";
}

@Override
protected void onProgressUpdate(Integer... values) {
   super.onProgressUpdate(values);       
}

@Override
protected void onPostExecute(String result) {
   super.onPostExecute(result);       
}

}

getAddress 関数のコードを追加する

 public String getAddress(){
   String address="";

   // getting address with geocoder using reverse geocoding
   Geocoder gcd = new Geocoder(this, Locale.getDefault());
   try{
   List<Address> addresses = gcd.getFromLocation(getLatitude(), getLongitude(), 1);
   if (addresses.size() > 0)           
       address=addresses.get(0).getAddressLine(0)+addresses.get(0).getAddressLine(1);      
   }catch(IOException e){
       ;
   }       
   return address;     
}
4

1 に答える 1