大佬教程收集整理的这篇文章主要介绍了Xamarin Android 活动识别转换在 Google Pixel3a 上不可靠,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,它使用 ActivityRecognitionAPI 来识别手机是否正在进入和退出 IN_VEHICLE 状态。
这在 Oneplus 设备上非常有效。但是,在 Google Pixel 3a 上,当我坐在办公桌上手机甚至没有移动时,手机告诉我正在进入 IN_VEHICLE。我什至过滤缓存的事件,所以这应该没问题。 这是我的代码:
@H_607_6@public class Activitymanager
{
private ActivityRecognitionClIEnt manager;
private ActivityTransitionrequest request;
private PendingIntent pendingIntent;
private Readonly Context context;
public Activitymanager(Context context)
{
this.context = context;
this.CreateActivityrequest();
}
private voID CreateActivityrequest()
{
manager = new ActivityRecognitionClIEnt(context);
var intent = new Intent(context,typeof(DetectedActivitIEsIntentservicE));
pendingIntent = PendingIntent.Getservice(context,intent,PendingIntentFlags.updateCurrent);
var Transitions = new List<ActivityTransition>
{
new ActivityTransition.builder()
.SetActivityType(DetectedActivity.InVehiclE)
.SetActivityTransition(ActivityTransition.ActivityTransitionEnter)
.build(),new ActivityTransition.builder()
.SetActivityType(DetectedActivity.InVehiclE)
.SetActivityTransition(ActivityTransition.ActivityTransitionExit)
.build(),new ActivityTransition.builder()
.SetActivityType(DetectedActivity.Still)
.SetActivityTransition(ActivityTransition.ActivityTransitionEnter)
.build(),new ActivityTransition.builder()
.SetActivityType(DetectedActivity.Still)
.SetActivityTransition(ActivityTransition.ActivityTransitionExit)
.build()
};
request = new ActivityTransitionrequest(Transitions);
}
public voID StartManager()
{
Console.Writeline("start updates");
manager.requestActivityTransitionupdates(request,pendingIntent);
}
public voID StopManager()
{
Console.Writeline("stopPing updates");
manager.RemoveActivityTransitionupdates(pendingIntent);
}
}
public class DetectedActivitIEsIntentservice : Intentservice
{
private WakeLock wakeLock;
protected const String TAG = "DetectedActivitIEsIS";
public DetectedActivitIEsIntentservice() : base(tag)
{
}
protected overrIDe voID OnHandleIntent(Intent intent)
{
if (ActivityTransitionResult.HasResult(intent))
{
var result = ActivityTransitionResult.ExtractResult(intent);
var Transitions = result.TransitionEvents;
foreach (var t in Transitions)
{
if (((Sy@R_404_6563@Clock.ElapsedRealtime() - (t.ElapsedRealTimeNanos / 1000000)) / 1000) <= 100)
{
if (t.ActivityType == DetectedActivity.InVehiclE)
{
if (t.TransitionType == 0) // 0 means vehicle entered
{
Startservice(); // this throws a notification - telling me i am driving.
}
else
{
checkExit(5);
}
}
}
}
messagingCenter.Send(new object(),"drivingStatus",DataStore.Driving);
messagingCenter.Send<object,String>(new object(),"new_activity_data",null);
}
}
}
}
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的Xamarin Android 活动识别转换在 Google Pixel3a 上不可靠全部内容,希望文章能够帮你解决Xamarin Android 活动识别转换在 Google Pixel3a 上不可靠所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。