質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.10%

MAp Activityにて位置情報の取得時にアプリ落ちが激しいです。

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 190

score 1

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;
}

}

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る