1

GoogleマップとGPSを扱うAndroidアプリに取り組んでいます。地図を表示する近接アラートアプリは、ユーザーからのタッチを受け入れ、その場所にアラームを設定します。ユーザーが通知を受け取りたい目的地からの距離を受け入れるために、EditText を追加しました。しかし、ユーザーが何を入力しても、アプリはその値を 2 km と見なします。GPS の代わりに携帯電話基地局の情報を使用しているためですか? また、アプリの開発に役立つチュートリアルがあれば、共有してください。ユーザーが地図上の場所を選択すると、通知距離を入力するための新しい画面が表示されます。しかし、アプリがマップ画面からユーザー入力画面に移動すると、GPS アイコンが消えます。何が問題なのですか?これは、アラームの設定を扱う部分です。

    mSetAlarm.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Get the distance from the shared preferences
            SharedPreferences preferences = PreferenceManager
                .getDefaultSharedPreferences(getBaseContext());

            String distanceStr = preferences.getString("distance", "0");
            double distance = Double.parseDouble(distanceStr);

            LocationManager locationManager = (LocationManager) getBaseContext()
                .getSystemService(Context.LOCATION_SERVICE);

            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            Intent intent = new Intent(LocationInfoActivity.this,
                MyBroadcastReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(
                getBaseContext().getApplicationContext(), 234324243,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);

            MyLocationListener locationListener = new MyLocationListener(
                locationManager, preferences, alarmManager,
                pendingIntent);

            if (distance < Double.parseDouble(i)) {
                alarmManager.set(AlarmManager.RTC_WAKEUP, System
                        .currentTimeMillis(), pendingIntent);
                locationManager.removeUpdates(locationListener);
            } else if (distance < 4.0) {
                WakeMeUtill.requestLocationUpdates(locationManager, 0, 0,
                        locationListener);
            } else {
                double quaterDistance = (distance * 3) / 4;
                WakeMeUtill.requestLocationUpdates(locationManager, 0,
                        (float) quaterDistance * 1000, locationListener);
            }
        }
    });
}
4

1 に答える 1

0

onPause() メソッドでこの行を書いたコードにあるかもしれません

onPause()
{
   gpsLocationManager.removeupdates() 
}

コードを確認してください。

これが問題ではない場合は、詳細を共有してください。

于 2013-01-25T13:46:14.567 に答える