🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1661閲覧

Androidstudioでの位置情報取得方法

anz0527

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

1クリップ

投稿2019/09/22 08:30

編集2019/09/22 15:04

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 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Java

1Create Create = new Create(); 2Create.CreateData();

Activity継承クラスをこんな呼び方することはありません。
ちゃんとIntentなりで呼び出してください。

というより、JavaもAndroidも初心者であれば、まず入門サイトなり書籍なりで勉強してきてください。
基礎を学んでいればありえない書き方です。

投稿2019/09/22 14:49

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anz0527

2019/09/24 14:20

ご回答ありがとうございます。 今一度勉強し直そうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問