【问题标题】:Android locationmanager not calling methodsAndroid locationmanager不调用方法
【发布时间】:2011-10-30 16:01:46
【问题描述】:

我在使用 Android 中的位置管理器时遇到问题。我有以下课程:

package com.flyer;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ContentProvider implements LocationListener {
    private Activity connectedActivity;

    public ContentProvider(Activity connectedActivity) {
        this.connectedActivity = connectedActivity;
        LocationManager locationManager = (LocationManager)connectedActivity.getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, this);
    }

    public void onLocationChanged(Location loc)
    {
        MyActivity.rowsData.add(new RowData(0, "Test", "Val: " + Math.random(), 0));
    }

    public void onProviderDisabled(String provider)
    {
        Intent in = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        connectedActivity.startActivity(in);
    }

    public void onProviderEnabled(String provider)
    {
        Toast.makeText(connectedActivity.getApplicationContext(),
                "Gps Enabled",
                Toast.LENGTH_SHORT).show();

    }

    public void onStatusChanged(String provider, int status, Bundle extras)
    {
        MyActivity.rowsData.add(new RowData(0, "Test", "Val: "+Math.random(), 0));
    }


}

我在 mainactivity 中调用构造函数 ContentProvider(this)。但是,当我远程登录到我的模拟器并进行地理修复时,什么也没有发生。

我尝试用断点设置内容,它不会到达。

我也在为 Android 2.1 开发。

任何帮助将不胜感激。

收到警告:

10-30 21:10:38.787: WARN/GpsLocationProvider(52): Could not open GPS configuration file /etc/gps.conf

【问题讨论】:

    标签: android gps


    【解决方案1】:

    您可以发布您的清单 XML 吗?您是否添加了必要的权限?

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

    您的 logcat 跟踪是否有任何异常?我建议在真实设备上尝试此操作,以排除模拟器的配置问题。

    仅供参考,这是我使用 adb logcat 为我的应用打开调试跟踪的方法:

    adb shell stop
    adb shell setprop log.tag.MYTAG DEBUG
    adb shell start
    adb logcat MYTAG:D *:W > c:\temp\trace.txt
    

    为了避免搞乱 DEBUG 级别的跟踪,我建议您坚持在 Log.INFO 级别进行日志记录。在这种情况下,您只需要最后一个命令。

    【讨论】:

    • 我添加了权限,是的。我确实收到警告,请添加 OP。此外,我找不到任何相关的错误。
    • 谷歌搜索该错误表明您需要在模拟器中设置位置,方法如下:groups.google.com/group/android-framework/msg/f94e0bbb227c03c6 用真机测试,不会有问题...
    • 我在两部手机上进行了测试,得到了 onProviderDisabled 和 onProviderEnabled,但从未到过 onLocationChanged。不知何故,它仍然无法正常工作,有什么想法吗?
    • 您是否已将日志添加到 onLocationChanged,或者您是否假设它没有被调用,因为 rowsData.add 行不起作用?您可能应该在任何地方添加日志,并在您的问题中包含 logcat 输出。
    • 您可能还会发现在所有重写方法之前添加@Override 很有用,这样如果您尝试实现的接口的方法错误,Eclipse 会警告您(在这种情况下,onLocationChanged 看起来没问题不过)。
    猜你喜欢
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多