Java初心者のため、至らないところもあるかと思いますがお願いいたします。
現在、androidstudioで位置情報を取得しそのデータをDBに登録するアプリを作成中です。
画面にある、位置情報取得ボタン押下時に位置情報取得とDB登録を行いたいです。。
位置情報を取得する処理をボタン押下時イベントの外に書いた場合は実行可能なのですが
ボタン実行時にのところに記載すると以下のようなエラーが出ます。
エラー場所;
java
1// 利用可能なロケーションプロバイダによる位置情報の取得の開始 2 manager.requestLocationUpdates(locationProvider, minTime, minDistance, this);
エラー内容;
cannot resolve method requestlocationupdates
①なぜLocationListenerの定義をしているのにこのようなエラーが出るのか
②どうすれば位置情報取得処理をボタン押下イベント内に組み込めるか
上記の2点について何かヒントをいただきたいです。
みなさま、ご教授のほどよろしくお願いいたします。
処理可能な場合;
java
1public class lifetime extends AppCompatActivity implements LocationListener { 2 public String strStatus; //キャラクター状態 3 public double dblDistance; //残距離 4 public double dLong; // 経度 5 public double dLat; // 緯度 6 public double dLong2; // 経度(データ取得) 7 public double dLat2; // 緯度(データ取得) 8 private LocationManager manager = null; 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.lifetime); 14 15 // Fine か Coarseのいずれかのパーミッションが得られているかチェックする 16 if (ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED 17 && ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 18 19 /** fine location のリクエストコード(値は他のパーミッションと被らなければ、なんでも良い)*/ 20 final int requestCode = 1; 21 22 // いずれも得られていない場合はパーミッションのリクエストを要求する 23 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, requestCode); 24 return; 25 } 26 // 位置情報を管理している LocationManager のインスタンスを生成する 27 manager = (LocationManager) getSystemService(LOCATION_SERVICE); 28 String locationProvider = null; 29 30 // GPSが利用可能になっているかどうかをチェック 31 if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 32 locationProvider = LocationManager.GPS_PROVIDER; 33 } 34 // GPSプロバイダーが有効になっていない場合は基地局情報が利用可能になっているかをチェック 35 else if (manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 36 locationProvider = LocationManager.NETWORK_PROVIDER; 37 } 38 // いずれも利用可能でない場合は、GPSを設定する画面に遷移する 39 else { 40 Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 41 startActivity(settingsIntent); 42 return; 43 } 44 45 /** 位置情報の通知するための最小時間間隔(ミリ秒) */ 46 final long minTime = 500; 47 /** 位置情報を通知するための最小距離間隔(メートル)*/ 48 final long minDistance = 1; 49 50 // 利用可能なロケーションプロバイダによる位置情報の取得の開始 51 manager.requestLocationUpdates(locationProvider, minTime, minDistance, this); 52 // 最新の位置情報 53 @SuppressLint("MissingPermission") 54 Location location = manager.getLastKnownLocation(locationProvider); 55 56 if (location != null) { 57 dLong = location.getLongitude();// 経度 58 dLat = location.getLatitude();// 緯度 59 } 60 61 <<処理中略>> 62 63 // 位置情報取得ボタン押下 64 final Button button = (Button) findViewById(R.id.button); 65 button.setOnClickListener(new View.OnClickListener() { 66 @Override 67 public void onClick(View v) { 68 ImageView imageView = (ImageView) findViewById(R.id.egg_pic); 69 70 //DBに登録 71 saveList(); 72 } 73 }); 74 }
エラーが発生する場合;
java
1public class lifetime extends AppCompatActivity implements LocationListener { 2 public String strStatus; //キャラクター状態 3 public double dblDistance; //残距離 4 public double dLong; // 経度 5 public double dLat; // 緯度 6 public double dLong2; // 経度(データ取得) 7 public double dLat2; // 緯度(データ取得) 8 private LocationManager manager = null; 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.lifetime); 14 15 // Fine か Coarseのいずれかのパーミッションが得られているかチェックする 16 if (ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED 17 && ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 18 19 /** fine location のリクエストコード(値は他のパーミッションと被らなければ、なんでも良い)*/ 20 final int requestCode = 1; 21 22 // いずれも得られていない場合はパーミッションのリクエストを要求する 23 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, requestCode); 24 return; 25 } 26 27 28 // 位置情報取得ボタン押下 29 final Button button = (Button) findViewById(R.id.button); 30 button.setOnClickListener(new View.OnClickListener() { 31 @Override 32 public void onClick(View v) { 33 ImageView imageView = (ImageView) findViewById(R.id.egg_pic); 34 // 位置情報を管理している LocationManager のインスタンスを生成する 35 manager = (LocationManager) getSystemService(LOCATION_SERVICE); 36 String locationProvider = null; 37 38 // GPSが利用可能になっているかどうかをチェック 39 if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 40 locationProvider = LocationManager.GPS_PROVIDER; 41 } 42 // GPSプロバイダーが有効になっていない場合は基地局情報が利用可能になっているかをチェック 43 else if (manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 44 locationProvider = LocationManager.NETWORK_PROVIDER; 45 } 46 // いずれも利用可能でない場合は、GPSを設定する画面に遷移する 47 else { 48 Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 49 startActivity(settingsIntent); 50 return; 51 } 52 53 /** 位置情報の通知するための最小時間間隔(ミリ秒) */ 54 final long minTime = 500; 55 /** 位置情報を通知するための最小距離間隔(メートル)*/ 56 final long minDistance = 1; 57 58 // 利用可能なロケーションプロバイダによる位置情報の取得の開始 59 manager.requestLocationUpdates(locationProvider, minTime, minDistance, this); 60 // 最新の位置情報 61 @SuppressLint("MissingPermission") 62 Location location = manager.getLastKnownLocation(locationProvider); 63 64 if (location != null) { 65 dLong = location.getLongitude();// 経度 66 dLat = location.getLatitude();// 緯度 67 } 68 69 <<処理中略>> 70 71 //DBに登録 72 saveList(); 73 } 74 }); 75 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/24 14:20