質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

2311閲覧

Android studio で位置情報を取得したい

mty103

総合スコア10

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2018/10/07 11:00

編集2018/10/07 12:47
コード ```Android で位置情報を取得したいと考えています。 参考にした本の通りに打ったつもりなのですが、 エラー: class、interfaceまたはenumがありませんが(15,35,36,39,40,41,45,50,55,56~63行) エラー: 型の開始が不正です85行目 エラー: ';'がありません92行目 エラー: <identifier>がありません エラー: 型の開始が不正です77行目 エラー: 型の開始が不正です78行目 エラー: class、interfaceまたはenumがありません 86行目 初心者でとりあえず打ってみたという感じですが、アドバイスを頂ければそれをもとに調べますのでよろしくお願いします。 public class PlayConnectSampleActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener { private LocationClient mLocationClient; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); mLocationClient = new LocationClient(this,this,this); } } @Override protected void onStart() { super.onStart(); mLocationClient.connect(); } @Override public void onConnected(Bundle bundle){ //位置情報の取得を開始する mLocationClient.requestLocationUpdates(mLocationRequest,this); } @Override public void onConnectionFailed(ConnectionResult connectionResult){ //TODO 接続が失敗した場合の処理 } @Override public void onStop(){ mLocationClient.disconnect(); super.onStop(); } @Override public void onDisconnected(){ //TODO 接続を切断した後の処理 } public class PlayConnectSampleActivity extends Activity implements ConnectionCallbacks,OnConnectionFailedListener{ private LocationRequest mLocationRequest; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //インスタンスの取得 mLocationRequest = LocationRequest.create(); //通常、5秒おきに位置情報を取得する mLocationRequest.setInterval(5000); //精度優先 mLocationRequest .setPriority( LocationRequest.PRIOPITY_HIGH_ACCURACY); //最短で1秒おきに位置情報を取得する mLocationRequest.setFastestInterval(1000); } } <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> public class PlayConnectSampleActivity extends Activity implements ConnectionCallbacks,OnConnectionFailedListener, LocationListener{ if(mLocationClient.isConnection()){ mLocationClient.requestLocationUpdates(mLocationRequest,this); } @Override public void onLocationChanged(Location location) { //位置情報が取れたらトースト表示 Toat.makeText(this, "latitude:" + location.getLatitude() + "," + "longitude:" + location.getLongitude(), Toast.LENGTH_LONG).show(); } if(mLocationClient.isConnected()){ mLoctionClient.removeLocationUpdates(this); } //引数のthisはLocationListenerとしてのActivity自身

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/10/07 12:27

コードは```で囲んでください。というかこのサイトはデバッグを頼むサイトじゃないので。
mty103

2018/10/07 12:52

プログラムの質問サイトと認識していたのですが、失礼しました。
退会済みユーザー

退会済みユーザー

2018/10/07 13:10

そもそもここがエラーですってでてるわけですしね・・・それらを直した上で、なお分からないことがあるのなら分かりますが・・・
mty103

2018/10/07 13:21

エラーの原因や修正の仕方がわからなかったのですが、 調べば直せる、調べが足りないということですね 。分からないところをなぜ 分からないか聞かれているようで、僕の学習不足でした。勉強してから出直しますありがとうございました。
guest

回答1

0

まず、貼られているコードについて訂正点を書いていきます。

@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); mLocationClient = new LocationClient(this,this,this); } } // このカッコがひとつ多い

プログラムは基本的に「{」で始まったくくりについては「}」で終わらせるように書かなくてはいけないので
数が合わないと正確に読み込めないためエラーが出てしまいます。
なのでプログラムを書く時にはインデントと言う字下げを行うことできちんとした構造で書けているのかを
わかりやすくする必要があります。上の例でいくと

@Override protected void onCreate(Bundle savedInstanceState){ // カッコが書かれた後からは字を一段階下げる super.onCreate(savedInstanceState); mLocationClient = new LocationClient(this,this,this); } // ここでカッコが終わったことがわかる } // ←カッコが終わった明確な位置がわかるので、こいつがいらないことがわかりやすい!!!

次に最後の方に書かれている以下のコードですが

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> public class PlayConnectSampleActivity extends Activity implements ConnectionCallbacks,OnConnectionFailedListener, LocationListener{ if(mLocationClient.isConnection()){ mLocationClient.requestLocationUpdates(mLocationRequest,this); } @Override public void onLocationChanged(Location location) { //位置情報が取れたらトースト表示 Toat.makeText(this, "latitude:" + location.getLatitude() + "," + "longitude:" + location.getLongitude(), Toast.LENGTH_LONG).show(); } if(mLocationClient.isConnected()){ mLoctionClient.removeLocationUpdates(this); } //引数のthisはLocationListenerとしてのActivity自身

<uses-permission〜についてはAndroidManifest.xmlと言うファイルに書くものでjavaファイルに書くものではありません。
また、public class PlayConnectSampleActivity〜についても上で書いているものと同じものなのでいらないはずです。(質問へのコード貼り付けミス?)

なので最初のカッコをひとつ消すのと、<uses-permission〜以下を削除すると一応、プログラムの構造的には間違っていないものになります。

プログラムを写して書くことは良いことだと思いますが、一気に書くのではなく、エラーが出ないように少しずつ書いていくとどこで書き方を間違ったのかや、どこでエラーが起きているのかがわかりやすいです。一気に書くとどこで間違えたのかを確認しづらくなります。

例えば、貼っていただいたコードを例にすると。

1

1public class PlayConnectSampleActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener { 2 3 private LocationClient mLocationClient; 4 5 // 最初はこれだけ。エラーがでないことを確認。 6 @Override 7 protected void onCreate(Bundle savedInstanceState){ 8 super.onCreate(savedInstanceState); 9 10 mLocationClient = new LocationClient(this,this,this); 11 } 12}

2

1public class PlayConnectSampleActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener { 2 3 private LocationClient mLocationClient; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState){ 7 super.onCreate(savedInstanceState); 8 9 mLocationClient = new LocationClient(this,this,this); 10 } 11 12 // 次はこんなかんじ。ここを増やした。 13 @Override 14 protected void onStart() { 15 super.onStart(); 16 17 mLocationClient.connect(); 18 } 19 20}

このような感じで順にエラーがでないように書いていくと良いと思います。

次に書いていただいたコードの内容についてですが、調べてたところ
LocationClientと言うのは古いものなので現在では使えないものと思われます(正確には使えないことはないですがそのままだと使えないと言った感じかもしれません)
参考にしている本が結構古いもの?なのかもしれません。
Androidなどは進化が早いので数年前のコードはそのまま使えなくなっている場合もあったりします。
なので本を使うにしても比較的新しいものにする、もしくは自分で適宜置き換えて書くのようなことが必要かもしれません。
もしくは、ネットの情報だと新しいものも見つけやすいのでネットの情報を参考にして作るのも手です。

以下のサイトは「Android 位置情報取得」で検索して一番上に出てきたものです。
[Android] GPSで位置情報を取得するアプリを作る

こちらのサイトのコードは新しいもので(記事の日付は2018/7/30と書かれていました)そのまま使ってもエラーが出ませんでしたのでおそらく大丈夫なものと思われます。(実際に位置情報が取得できるかは試していません。)

長々と書きましたので不明点などあればコメントしていただければと思います。
(上の方はいただいたコードについて、最後はAndroidで位置情報取得を取得する方法についてなので、本来の目的が後者であれば上については流し読みでもかまいません)

投稿2018/10/09 07:42

razuma

総合スコア1313

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問