普通网友 2014-07-03 00:34 采纳率: 0%
浏览 999

loaction在真机当中获取不到经纬度,但是虚拟机DDMS当中却可以

package com.example.locationtest;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

LocationManager lm;
TextView show;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    lm=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
    show=(TextView) super.findViewById(R.id.show);

    //从GPS获取最近的最近定位信息
    Location loaction=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    Log.e("location", loaction+"");

    //更新界面显示
    updateView(loaction);

    //lm.setTestProviderEnabled("gps",true); 

    //周期性的获取定位信息,并触发监听器
    /**
     * provider
     * 最小时间
     * 距离
     */
    //每隔3s更新一下数据
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() {

        @Override
        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {


        }

        @Override
        public void onProviderEnabled(String provider) {

            updateView(lm.getLastKnownLocation(provider));
        }

        @Override
        public void onProviderDisabled(String arg0) {

            updateView(null);
        }

        @Override
        public void onLocationChanged(Location loaction) {
            updateView(loaction);
        }
    });


}


//更新EditText当中的内容
public void updateView(Location loaction){

    if(loaction!=null){
        StringBuilder sb=new StringBuilder();

        Log.e("经度", loaction.getLongitude()+"");

        sb.append("实时位置信息:");
        sb.append("\n经度:"+loaction.getLongitude());
        sb.append("\n维度:"+loaction.getLatitude());
        sb.append("\n高度:"+loaction.getAltitude());
        sb.append("\n速度:"+loaction.getSpeed());
        sb.append("\n方向:"+loaction.getBearing());

        show.setText(sb.toString());

    }
    else{
        show.setText("");
    }

}   

}

权限都已经加完了

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 05:48
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Android中,getLastKnownLocation()方法是用于获取设备上的最后一次可用的地理位置。这个方法会根据当前系统的时间和地点信息来返回一个Location对象。

    然而,在某些情况下,即使你的应用已经获得了适当的权限(例如GPS权限),你仍然可能会遇到问题。这可能是因为:

    1. 应用程序与网络断开:如果你的应用程序没有连接到互联网,它将无法使用GPS服务。
    2. 地理限制:某些国家和地区可能有地理限制,禁止或限制GPS定位服务。
    3. GPS信号弱:如果GPS信号很弱,它也可能导致定位失败。
    4. 其他原因:还有可能是由于手机软件的问题、硬件故障或其他未知的原因导致定位失败。

    在这种情况下,你可以尝试以下解决方案:

    • 如果你在模拟器中测试时能够正常获取经纬度,那么在真实设备上也应能正常工作。如果是这样,那可能是由于实际环境下的条件影响了定位结果。
    • 如果你仍然遇到问题,请检查你的代码是否有错误,或者是否正确处理了所有可能出现的情况。确保所有的API调用都按预期进行。
    • 如果以上情况都不适用,你需要考虑联系开发者团队或制造商的技术支持以获得帮助。

    注意:在实际生产环境中,你应该始终遵守严格的隐私政策,尊重用户的位置隐私权。

    评论

报告相同问题?