Android DDMS GPS местоположение установлено, но нигде в системе нет реакции - PullRequest
1 голос
/ 15 августа 2011

Я пытаюсь использовать макет местоположения DDMS с очень простым Log.i() вызовом в функциях всех атрибутов LocationListener. Когда я запускаю программу, я получаю сообщение Log.i() для onStatusChanged() в моем LogCat, поэтому я думаю, что я правильно зарегистрировал слушателя. Но когда я помещаю местоположение в виртуальную машину с помощью меню DDMS в Eclipse, я ничего не получаю. Без изменений в LogCat, Console или внутри виртуальной машины. Как будто ничего не случилось вообще.

Как я могу даже начать обнаруживать проблему?

Вот код моего простого GPS-регистратора событий:

public class gpsActivity extends Activity {

    private static final String TAG="gpsActivity";
    private static TextView label;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        label = (TextView) findViewById(R.id.label);
        LocationManager manager = (LocationManager) this
                .getSystemService(LOCATION_SERVICE);
        LocationListener listener = new LocationListener() {
            @Override
            public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
                Log.i(TAG, "onStatusChanged: "+arg0);
            }
            @Override
            public void onProviderEnabled(String arg0) {
                Log.i(TAG, "onProviderEnabled: "+arg0);
            }
            @Override
            public void onProviderDisabled(String arg0) {
                Log.i(TAG, "onProviderDisabled: "+arg0);
            }
            @Override
            public void onLocationChanged(Location location) {
                Log.i(TAG, "onLocationChanged");
            }
        };
        manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2, 0,
                listener);
        setContentView(R.layout.main);
    }
}

и вот манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.mypackage.example.gps"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="3" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".gpsActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
        </activity>
    </application>
</manifest>

Также в качестве еще одного примечания, я использую немецкую Windows XP и обнаружил, что есть проблемы с пакетами GPS, потому что в немецкой системе числовой формат для 1/2 не 0,5, а 0,5, что приводит к ошибкам в грамматике парсера GPS. Но также изменение формата номера моей системы на английский (США) не изменило того, что я не получаю никаких сообщений, исключений или результатов вообще.

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Там, где 3 проблемы.Поскольку поиск всех из них занял более 12 часов чистого исследовательского времени, извините, что я даже не буду пытаться найти соответствующие источники снова.

Проблемы, связанные с тем, где:

  1. Вы должны использовать Google API <version> в качестве цели, а не Android <version>, потому что в последнем нет необходимых вещей.
  2. Вы должны отправлять обновления через telnet, а не DDMS, потому что DDMS создает некоторые неопределенные, недокументированные и не зарегистрированныерезультаты, особенно если вы используете не Windows версию Windows.
  3. Часовой пояс в вашем эмуляторе выбирается автоматически, но, возможно, не в той локали (например, у меня в Германии).Вы можете отключить его внутри запущенного эмулятора в настройках Android, а также выбрать правильный язык.Похоже, это появляется только в старых версиях Android.

Удачи всем, кто пробует свой путь к такого рода ошибкам!

1 голос
/ 15 августа 2011

Убедитесь, что ваше устройство / эмулятор выбран в меню устройства DDMS.

РЕДАКТИРОВАТЬ:

Упс.Я должен был видеть это раньше:

Вы используете NETWORK_PROVIDER.Чтобы получать фиктивные местоположения из DDMS (и я думаю, также из командной строки через geo), вы должны зарегистрировать GPS_PROVIDER.Ваш код работает, изменяя последнюю строку метода onCreate:

manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2, 0,
                listener); 

NETWORK_PROVIDER - это сигналы через телефонную сеть (например, 3G) или WIFI

...