gpt4 book ai didi

android - addProximityAlert 不起作用(requestLocationUpdates 也不起作用)- Android

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:38 28 4
gpt4 key购买 nike

当手机靠近某个位置时,我正在尝试获取和更新。我都尝试过使用 addProximityAlert 和 requestLocationUpdates

    LocationManager lm =(LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location l = lm.getLastKnownLocation("gps");
Intent intent = new Intent("eu.mauriziopz.gps.ProximityAlert");
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
lm.addProximityAlert(12, 12, 100, 1000000, pIntent);

这个从不触发 Intent (我知道这是有效的,因为我可以手动触发它)。我尝试使用监听器,但它只执行一次。无论我更新多少次 gps,它都不会再被调用

    ProximityListener pl = new ProximityListener();
lm. requestLocationUpdates("gps", 2000, 10, pl);

这是 Activity 的代码(在第一种情况下调用)

public class ProximityAlert extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.d("intent", "Hi");
finish();
}

这是监听器

public class ProximityListener implements LocationListener {
String DEBUG_TAG = "ProximityListener";
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Log.d(DEBUG_TAG, location.toString());

}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}

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

}
}

谢谢

最佳答案

我认为问题在于您如何定义 Intent/PendingIntent。使用 Intent 启动 Activity 有两种方法,您包含的代码看起来像是两者的结合。

启动 Activity 的标准方法是使用 Intent 构造函数获取当前上下文和 Activity 的类,并使用 PendingIntent 上的 getActivity 方法来创建 PendingIntent :

Intent intent = new Intent(this, ProximityAlert.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);

或者,您可以将 IntentReceiver 添加到 list 中的 Activity,并使用 IntentFilter 监听特定操作(例如“eu.mauriziopz.gps.ProximityAlert”)。但是,在这种情况下,您需要使用 PendingIntent.getBroadcast 来创建 PendingIntent。

Intent intent = new Intent("eu.mauriziopz.gps.ProximityAlert");
PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

在所有情况下,您都需要确保您拥有 list 中定义的基于位置的服务的正确权限:

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

此外,您可以考虑使用静态常量 LocationManager.GPS_PROVIDER,而不是使用字符串“gps”。

关于android - addProximityAlert 不起作用(requestLocationUpdates 也不起作用)- Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/906850/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com