位置情報サービスの要求条件を指定して位置情報の更新を通知する(2)


位置情報サービスの要求条件を指定して位置情報の更新を通知するではブロードキャストを

使用して位置情報の更新を通知しましたが、今回はLocationListener使用して更新通知を

受けとります。

詳細は以下から

サンプルコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package org.jpn.techbooster.sample.LocationListenerSample;
 
import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
 
public class LocationListenerSample extends Activity implements
        LocationListener {
    private LocationManager lm;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        // LocationManagerオブジェクトの生成
        lm = (LocationManager) getSystemService(LOCATION_SERVICE);
 
        // ローケーション取得条件の設定
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        criteria.setSpeedRequired(false);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(false);
 
        lm.requestLocationUpdates(1000, 1, criteria, this, this
                        .getMainLooper());
 
    }
 
    // 位置情報が変更された場合に呼び出される
    @Override
    public void onLocationChanged(Location loc) {
        this.display(loc);
    }
 
    // LocationProviderが有効になった場合に呼び出される
    @Override
    public void onProviderDisabled(String provider) {
    }
 
    // LocationProviderが無効になった場合に呼び出される
    @Override
    public void onProviderEnabled(String provider) {
    }
 
    // LocationProviderの状態が変更された場合に呼び出される
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
 
    private void display(Location loc) {
        String message = "Location\n" + "Longitude:" + loc.getLongitude()
                + "\n" + "Latitude:" + loc.getLatitude();
 
        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }
 
}

LocationListenerインターフェイスのimplements

位置情報の更新をLocationListenerで受ける場合には、更新通知を受けるクラスで
LocationListenerインターフェイスを実装する必要があります(サンプルコード11、12行目)。
また、LocationListenerインターフェイスは以下の4つのメソッドを実装する必要があります。

onLocationChanged 位置情報が変更された場合に呼び出される
onProviderDisabled LocationProviderが有効になった場合に呼び出される
onProviderEnabled LocationProviderが無効になった場合に呼び出される
onStatusChanged LocationProviderの状態が変更された場合に呼び出される

この中から今回はonLocationChangedを使用して更新通知を受け取り、Toastで変更後の位置情報を出力しています。(39~42行目)

Criteriaの設定とパーミッションの設定

Criteriaの設定とパーミッションの設定に関してはここを参照して下さい。