map activity でこのプログラムを組み込んだんですが、画面落ちが激しいです。
問題点を教えてください。
map activityにて位置情報を取得しようとしています。
詳しく教えていただきたいです。よろしくお願いします。
public class MapsActivity extends FragmentActivity implements LocationListener {
private GoogleMap mMap; private LocationManager mLocationManager; private String bestProvider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initLocationManager(); } @Override protected void onStart() { super.onStart(); locationStart(); } @Override protected void onStop() { super.onStop(); locationStop(); } private void initLocationManager() { // インスタンス生成 mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // 詳細設定 Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setPowerRequirement(Criteria.POWER_HIGH); criteria.setSpeedRequired(false); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH); criteria.setVerticalAccuracy(Criteria.ACCURACY_HIGH); bestProvider = mLocationManager.getBestProvider(criteria, true); } private void checkPermission() { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // パーミッションの許可を取得する ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1000); } } private void locationStart() { checkPermission(); mLocationManager.requestLocationUpdates(bestProvider, 60000, 3, this); } private void locationStop() { mLocationManager.removeUpdates(this); } @Override public void onLocationChanged(Location location) { Log.d("DEBUG", "called onLocationChanged"); Log.d("DEBUG", "lat : " + location.getLatitude()); Log.d("DEBUG", "lon : " + location.getLongitude()); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { Log.d("DEBUG", "called onStatusChanged"); switch (status) { case LocationProvider.AVAILABLE: Log.d("DEBUG", "AVAILABLE"); break; case LocationProvider.OUT_OF_SERVICE: Log.d("DEBUG", "OUT_OF_SERVICE"); break; case LocationProvider.TEMPORARILY_UNAVAILABLE: Log.d("DEBUG", "TEMPORARILY_UNAVAILABLE"); break; default: Log.d("DEBUG", "DEFAULT"); break; } } @Override public void onProviderDisabled(String provider) { Log.d("DEBUG", "called onProviderDisabled"); } @Override public void onProviderEnabled(String provider) { Log.d("DEBUG", "called onProviderEnabled"); } //オプションメニューを作成 @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, 0, 0, "衛星写真"); menu.add(0, 1, 1, "地形ビュー"); menu.add(0, 2, 2, "ハイブリッド"); menu.add(0, 3, 3, "ノーマル"); menu.add(0, 4, 4, "渋滞情報オン"); menu.add(0, 5, 5, "渋滞情報オフ"); return true; } //メニューアイテムが選択された時の処理 @Override public boolean onContextItemSelected(@NonNull MenuItem item) { super.onContextItemSelected(item); int itemID = item.getItemId(); switch (itemID) { case 0: //衛星写真を表示 mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); break; case 1: //地形ビューを表示 mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN); break; case 2: //ハイブリッドビューの表示 mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); break; case 3: //ノーマルビューの表示 mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); break; case 4: //渋滞情報を表示 mMap.setTrafficEnabled(true); break; case 5: //渋滞情報を解除 mMap.setTrafficEnabled(false); break; default: break; } return true; }
}
あなたの回答
tips
プレビュー