回答編集履歴

1

追記

2018/10/07 13:38

投稿

rubytomato
rubytomato

スコア1752

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  また、参考にされているサイトのプログラムはLocationListenerというインタフェースを実装し、onLocationChangedメソッドをオーバーライドしています。
54
54
 
55
- これによって、位置情報が変わったタイミングAndroid OSが透過的にこのメソッドを呼び出しているのだと思います。
55
+ これによって、位置情報が変わったタイミングか定期的にAndroid OSが透過的にこのメソッドを呼び出しているのだと思います。
56
56
 
57
57
 
58
58
 
@@ -65,6 +65,8 @@
65
65
  //...省略
66
66
 
67
67
 
68
+
69
+ // 位置情報が通知されるたびにコールバックされる
68
70
 
69
71
  @Override
70
72
 
@@ -87,3 +89,91 @@
87
89
 
88
90
 
89
91
  以上、ご参考になれば幸いです。
92
+
93
+
94
+
95
+
96
+
97
+ **追記**
98
+
99
+
100
+
101
+ > 実際に試して見たところ、locationの取得の際に、定義をfinalをつけなければならないというエラーになったのですが、なぜでしょうか?
102
+
103
+
104
+
105
+ Javaの仕様では内部クラス(ローカルクラス、匿名クラス)からローカル変数にアクセスするには、その変数はfinalでなければいけないようです。(すっかり失念していました)
106
+
107
+ anz0527さんのコードでいえば、下記のsetOnClickListenerメソッドに渡している部分が匿名クラスになります。
108
+
109
+
110
+
111
+ ```java
112
+
113
+ // 登録ボタン押下時処理
114
+
115
+ mButton01Regist.setOnClickListener(new View.OnClickListener() {
116
+
117
+
118
+
119
+ // ここで匿名クラスのonClickメソッドの実装
120
+
121
+ @Override
122
+
123
+ public void onClick(View v) {
124
+
125
+ }
126
+
127
+
128
+
129
+ });
130
+
131
+ ```
132
+
133
+
134
+
135
+ なお、locationの取得はsaveListメソッド内で行ってもいいかもしれません。
136
+
137
+
138
+
139
+ > android.location.LocationListenerはキャストしているつもりなのですが、何が悪いのでしょうか?
140
+
141
+ 何度も申し訳ありませんが、お分かりでしたらお願いいたします。
142
+
143
+
144
+
145
+ 上記にも書きましたが、ご参考にされているサイトのプログラムは、LocationListenerというインタフェースを実装しているので、LocationListener型の引数を取るremoveUpdatesメソッドやrequestLocationUpdatesメソッドに自分自身のインスタンス(つまりthis)を渡すことができます。
146
+
147
+
148
+
149
+ > removeUpdates(LocationListener listener)
150
+
151
+
152
+
153
+ ```java
154
+
155
+ manager.removeUpdates(this);
156
+
157
+ ```
158
+
159
+
160
+
161
+ > requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
162
+
163
+
164
+
165
+ ```java
166
+
167
+ manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
168
+
169
+ ```
170
+
171
+
172
+
173
+ anz0527さんの書かれているコードのMainActivityクラスはLocationListenerインターフェースを実装していないのでキャストはできません。
174
+
175
+ ご参考にされているサイトのプログラムは、GPSで計測する位置情報をリアルタイムに画面に表示するというもののようですが、このプログラムを参考にするなら、anz0527さんのMainActivityクラスもLocationListenerインターフェースを実装することで解決できるかもしれません。
176
+
177
+
178
+
179
+ ちょっと古めの情報ですが[Androidで位置情報の取得を行う方法](https://techblog.recochoku.jp/705)が参考になりそうだと思いましたので共有致します。