0

GPS を使用してユーザーの位置を表示しようとしています。デバイスで GPS が無効になっている場合、ユーザーが設定に移動して有効にする必要があるように、次のコードを作成しました。有効になっている場合は、ユーザーの現在の位置を表示する必要があります。Android デバイスでアプリケーションを実行しています。アプリケーションの実行時にエラーは発生しませんが、位置は表示されません。助けてください------------主な活動--------------------

package com.android.disasterAlertApp;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

import android.util.Log;
import android.widget.Toast;

public class MainActivity extends Activity {
/** Called when the activity is first created. */

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Toast.makeText(this, "GPS is Enabled in your devide", Toast.LENGTH_SHORT).show();
  }
  else{
    showGPSDisabledAlertToUser();
   }
  }

  private void showGPSDisabledAlertToUser(){
  AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
  alertDialogBuilder.setMessage("GPS is disabled.Do you want to enable it?")
 .setCancelable(false)
 .setPositiveButton("Goto Settings Page To Enable GPS",
 new DialogInterface.OnClickListener(){
 public void onClick(DialogInterface dialog, int id){
 Intent callGPSSettingIntent = new Intent(
 android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
 startActivity(callGPSSettingIntent);
    }
  });
 alertDialogBuilder.setNegativeButton("Cancel",
 new DialogInterface.OnClickListener(){
 public void onClick(DialogInterface dialog, int id){
 dialog.cancel();
  }
 });
 AlertDialog alert = alertDialogBuilder.create();
 alert.show();
 }

  private class mylocationlistener implements LocationListener {
    public void onLocationChanged(Location location) {
      if (location != null) {
   Log.d("LOCATION CHANGED", location.getLatitude() + "");
Log.d("LOCATION CHANGED", location.getLongitude() + "");
Toast.makeText(MainActivity.this,
    location.getLatitude() + "" + location.getLongitude(),
    Toast.LENGTH_LONG).show();
     }
   }

   public void onProviderDisabled(String provider) {
  }
   public void onProviderEnabled(String provider) {
  }
   public void onStatusChanged(String provider, int status, Bundle extras) {
  }
  }
 } 

 ------------Manifest-----------------

 <uses-sdk android:minSdkVersion="8" />

<application
   android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
    android:name=".Splash"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

       <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.android.disasterAlertApp.MAINACTIVITY" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
     </activity>

 </application>   
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES"></uses-permission>
 </manifest>
4

3 に答える 3

0

この権限をマニフェストファイルに追加します

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
于 2012-05-17T06:19:47.060 に答える
0

デバイスの GPS ハードウェアが機能していることを確認してください。私は 2 台の新しい LG Lucid 電話を持っていましたが、どちらも GPS が機能しませんでした。位置設定で GPS ボックスのみをチェックし、Google マップを起動して位置を取得できるかどうかを確認します。

于 2012-05-18T07:05:06.683 に答える
0

GPS 位置を取得するには時間がかかります。建物内で GPS 値を取得するのが難しい場合は、デバイスが建物の外にある場合は GPS 値を取得できます。

于 2012-05-17T06:02:10.073 に答える