0

私はアンドロイドの場所のためにこのコードを試していますが、エミュレータを実行すると「残念ながら場所が停止しました」と表示されます...何か考えはありますか? これは MainActivity のコードです (私はこのチュートリアルhttp://www.vogella.com/articles/AndroidLocationAPI/article.html#locationapi_gpsenableに従いました)

    public class MainActivity extends Activity implements LocationListener {
      private TextView latituteField;
      private TextView longitudeField;
      private LocationManager locationManager;
      private String provider;

/** Called when the activity is first created. */

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        latituteField = (TextView) findViewById(R.id.TextView02);
        longitudeField = (TextView) findViewById(R.id.TextView04);

// Get the location manager
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// Define the criteria how to select the locatioin provider -> use
// default
        Criteria criteria = new Criteria();
        provider = locationManager.getBestProvider(criteria, false);
        Location location = locationManager.getLastKnownLocation(provider);

// Initialize the location fields
        if (location != null) {
          System.out.println("Provider " + provider + " has been selected.");
          onLocationChanged(location);
        } else {
          latituteField.setText("Location not available");
          longitudeField.setText("Location not available");
        }
      }

/* Request updates at startup */
      @Override
      protected void onResume() {
        super.onResume();
        locationManager.requestLocationUpdates(provider, 400, 1, this);
      }

/* Remove the locationlistener updates when Activity is paused */
      @Override
      protected void onPause() {
        super.onPause();
        locationManager.removeUpdates(this);
      }

      @Override
      public void onLocationChanged(Location location) {
        int lat = (int) (location.getLatitude());
        int lng = (int) (location.getLongitude());
        latituteField.setText(String.valueOf(lat));
        longitudeField.setText(String.valueOf(lng));
      }

      @Override
      public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

      }

      @Override
      public void onProviderEnabled(String provider) {
        Toast.makeText(this, "Enabled new provider " + provider,
            Toast.LENGTH_SHORT).show();

      }

      @Override
      public void onProviderDisabled(String provider) {
        Toast.makeText(this, "Disabled provider " + provider,
            Toast.LENGTH_SHORT).show();
      }
    }   
4

3 に答える 3

2

エミュレータの場所を手動で入力する必要があります。いくつかのオプションがあります

オプション 1: DDMS を使用する

  • android/tools ディレクトリに移動し、DDMS ツールを起動します

  • エミュレータ制御タブを選択します

  • Location Controls フィールドに経度と緯度の値を入力します

  • 送信ボタンを押します

オプション 2: telnet を使用する

  • コマンド シェルを開く
  • 次のコマンドでエミュレータに接続します: telnet localhost
  • 固定の場所を入力するには、次のコマンドを実行します。

geo fix <経度> <緯度> [<高度>]

オプション 3: サードパーティのアプリを使用する

android-gps-emulatorアプリを試して、場所を設定できます。こういうアプリは他にもあるだろう

ソース

于 2013-03-16T03:54:03.730 に答える
1

Genymotionエミュレーターを使用できます。仮想デバイス上の場所を非常に簡単に設定できます。

于 2016-02-02T00:07:19.910 に答える