尝试获取 GPS 位置并将其显示在 TextView 中

Posted

技术标签:

【中文标题】尝试获取 GPS 位置并将其显示在 TextView 中【英文标题】:Trying to get GPS Location and show it in a TextView 【发布时间】:2013-08-03 01:37:20 【问题描述】:

我对 android 开发非常陌生。所以请原谅这个重复的问题。我已经尝试了许多解决方案,但似乎没有一个对我来说很合适......它们都在模拟器和我的手机上崩溃。

我正在开发一个应用程序,只想获取我的 GPS 位置,然后将名为“big”的 TextView 设置为该位置的值。

这是代码。 (我的代码中有导入语句和所有内容..我只是没有复制它们

GPSActivity //启动的活动。 textview R.id.big 确实存在

public class GPSActivity extends Activity

private LocationManager       manager = null;
private MyLocationListener    listener;
private TextView             textView;
@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    listener = new MyLocationListener(textView);
    textView = (TextView) findViewById(R.id.big);

    manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    listener = new MyLocationListener(textView);

    manager.requestLocationUpdates(LocationManager
            .GPS_PROVIDER, 5000, 10,listener);

    
 

我实现了自己的 LocationListener 来更改我的 TextView...我不确定我是否真的可以这样做...

public class MyLocationListener implements LocationListener

TextView textView;

public MyLocationListener(TextView textView)

    this.textView = textView;


@Override
public void onLocationChanged(Location location) 
    this.textView.setText(location.toString());


@Override
public void onStatusChanged(String s, int i, Bundle bundle) 



@Override
public void onProviderEnabled(String s) 



@Override
public void onProviderDisabled(String s) 



最后是我的清单文件。我确保包括我需要的权限。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mytestapp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="12"
    android:targetSdkVersion="16" />
<application

    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar" >
    <activity
        android:name="com.mytestapp.GPSActivity"
        android:permission="ACCESS_FINE_LOCATION"
        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>

当我调用requestLocationUpdates() 时,问题出现在GPSActivity。如果我将这一行留在代码中,应用程序会崩溃。如果我将其注释掉,TextView 'big' 会像我期望的那样显示。

编辑:我还尝试创建一个 LocationListener 作为内部类,就像我看到很多其他人在 SO 上所做的那样......我得到了相同的结果(应用程序崩溃)

【问题讨论】:

Praytell,你的 logcat 对崩溃有什么看法? Hmmmm.good question 我什至没想过要检查。在模拟器上显示java.lang.RuntimeException: Unable to start activity ComponentInfocom.testapp/com.testapp.GPSActivity: java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission. 所以....我的清单文件有什么问题? logcat 的好处在于它可以准确地告诉您在许多情况下出了什么问题:“位置提供程序需要 ACCESS_FINE_LOCATION 权限”。添加它。 是的,我有权限行,但它在错误的位置。现在它完美无缺。谢谢 【参考方案1】:

添加

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

到您的 manifest.xml 文件。

【讨论】:

好的...谢谢。我的位置没有显示,但至少我没有崩溃。看来我还有其他问题要解决。谢谢!【参考方案2】:

使用 GPS 或 WiFi 完全支持地理定位:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>   
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

对于不支持 gps 使用的设备:

<uses-feature
     android:name="android.hardware.location.gps"
     android:required="false" />

【讨论】:

【参考方案3】:

除了 ACCESS_FINE_LOCATION 权限尝试添加 ACCESS_GPS

它们应该看起来像这样......

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_GPS" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

【讨论】:

以上是关于尝试获取 GPS 位置并将其显示在 TextView 中的主要内容,如果未能解决你的问题,请参考以下文章

Android 谷歌地图使用 GPS 定位而不是网络

Android:获取 GPS 坐标并将其发送到服务器的服务

安卓。如何知道检测到的位置是来自 GPS 还是网络提供商

如何从一个 android 设备检索 GPS 位置并将其实时提供给另一台 android 设备 [关闭]

android在后台获取位置并更新listview

获取 GPS 位置坐标并存储在数组中 [重复]