首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android检测车辆是否移动

Android检测车辆是否移动
EN

Stack Overflow用户
提问于 2016-08-12 09:53:58
回答 1查看 5.1K关注 0票数 4

我正在开发一个类似Uber的应用程序,如果车辆停止移动(或移动),我们需要计算等待时间。

我试着用GPS定位速度,但似乎没什么用。然后,我们尝试了,它也没有立即更新。

我们还有别的办法可以做到这一点吗?请注意,这与检测速度无关。它是关于检测车辆是否在移动。

谢谢你,阿尼夫

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 14:06:10

据我所知,你有三种选择:

  1. 您可以使用活动识别接收位置更新实现您自己的驾驶检测技术,尽管(我建议不要这么做)--,不要重新发明轮子,已经开发了很好的apis。
  2. 您可以使用免费的尼乌拉 sdk,它可以在用户开始驾驶并完成驾驶时发送给您一个事件。看看这个git项目:基本上,当你开始开车的时候,这个项目会用文字到语音来宣布通知,这不是你想要的,但是当Neura给你发送一个开始/结束驾驶的事件时,你可以做你想做的任何事情。很容易就把这个项目变成你自己的了。I强烈建议使用此选项.
  3. 你可以使用谷歌的FenceApi来声明一个驱动围栏。 虽然这种方法看起来不错,但我已经面临这样一个事实:这个api有时没有告诉我什么时候用户开始/完成了驱动,有时在我开始驾驶之后很长一段时间,api才告诉我这个事件。 答:包括对应用程序的build.gradle文件的依赖: 编译'com.google.android.gms:play-services-location:+‘编译'com.google.android.gms:play-services-contextmanager:+’ b.清单定义:

PUT_YOUR_AWARENESS_KEY_HERE :您需要生成一个密钥这里

c.您的MainActivity类-附于代码的说明:

公共类MainActivity扩展活动{私有GoogleApiClient mGoogleApiClient;私有PendingIntent mPendingIntent;私有FenceReceiver mFenceReceiver;//触发围栏时将触发的意图操作。私有最终字符串FENCE_RECEIVER_ACTION = BuildConfig.APPLICATION_ID + "FENCE_RECEIVER_ACTION";@重载受保护的虚空onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mGoogleApiClient =新的BuildConfig.APPLICATION_ID mGoogleApiClient.connect();//设置触发围栏时将触发的PendingIntent。mPendingIntent =PendingIntent.getBroadcast(这个,0,新意图(FENCE_RECEIVER_ACTION),0);//当触发栅栏时接收意图的广播接收器。mFenceReceiver =新的FenceReceiver();registerReceiver(mFenceReceiver,新的IntentFilter(FENCE_RECEIVER_ACTION));createFence(DetectedActivityFence.IN_VEHICLE,"InVehicleFence");} @Override (){ try { unregisterReceiver(mFenceReceiver);//不要忘记注销接收方} catch (除e外){ e.printStackTrace();} super.onDestroy();}私有createFence(int detectedActivityFence,最终字符串fenceKey) { AwarenessFence fence =AwarenessFence //注册栅栏以接收回调。FenceUpdateRequest.Builder().addFence(fenceKey,Awareness.FenceApi.updateFences( mGoogleApiClient,new mGoogleApiClient fence,mPendingIntent) .build().setResultCallback(新ResultCallback() {@覆盖公共void (@NonNull状态)){ if (status.isSuccess()) { Log.i(getClass().getSimpleName(),“成功注册”);{ Log.e(getClass().getSimpleName(),“无法注册:”+status;});} //处理意图上的回调。公共类FenceReceiver扩展BroadcastReceiver { @Override void onReceive(上下文上下文,意图意图){ FenceState fenceState =FenceState.extract(意图);开关(fenceState.getCurrentState()) { case FenceState.TRUE: Log.i(fenceState.getFenceKey(),“驱动”);中断;案例FenceState.FALSE: Log.i(fenceState.getFenceKey(),“非驾驶”);中断;}

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38915050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档