- Android
- 2011-11-16 - 更新:2012-04-25
この記事は最終更新日から1年以上経過しています。
前回のオートフォーカス撮影に位置情報を付加する機能を追加します。
implementsでLocationListenerを実装します。
HelloCameraActivity.java
public class HelloCameraActivity extends Activity implements LocationListener { private AutoFocusPreview mPreview; private LocationManager mLocationManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); mPreview = new AutoFocusPreview(this); setContentView(mPreview); } @Override protected void onResume() { if (mLocationManager != null) { mLocationManager.requestLocationUpdates( //LocationManager.GPS_PROVIDER, // 精度は高いが遅い(誤差15m程度) LocationManager.NETWORK_PROVIDER, // 精度は低いが速い(誤差100m程度) //LocationManager.PASSIVE_PROVIDER, //位置情報の修正を行わない特殊なプロバイダー(他アプリ等で測位された場合に、その位置情報を流用するらしい) 0, //通知する時間の間隔をミリ秒で指定します 0, //通知する距離の間隔をメートルで指定します this); } super.onResume(); } @Override protected void onPause() { if (mLocationManager != null) { mLocationManager.removeUpdates(this); } super.onPause(); } @Override public void onLocationChanged(Location location) { AutoFocusPreview.location = location; } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { }
CameraPreview.javaは省きます
前回のAutoFocusPreview.javaを変更します。
位置情報登録用のロケーションをstatic宣言
public static Location location;
ContentValuesに緯度経度の情報を追加する
ContentValues values = new ContentValues(7); values.put(Images.Media.TITLE, name); values.put(Images.Media.DISPLAY_NAME, filename); values.put(Images.Media.DATE_TAKEN, dateTaken); values.put(Images.Media.MIME_TYPE, "image/jpeg"); values.put(Images.Media.DATA, filePath); values.put(Images.Media.LATITUDE, location.getLatitude()); values.put(Images.Media.LONGITUDE, location.getLongitude()); return cr.insert(IMAGE_URI, values);
3,792 views