まず、貼られているコードについて訂正点を書いていきます。
@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で位置情報取得を取得する方法についてなので、本来の目的が後者であれば上については流し読みでもかまいません)