Google Play服务活动识别会断开,不会出现任何错误

时间:2015-10-01 03:56:11

标签: java android eclipse google-play-services

我正在编写一个后台服务(由活动启动),用于记录屏幕开/关事件和用户活动。

对于活动,我使用谷歌api客户端。该应用程序在Moto G手机上正常工作,即记录活动和屏幕,但活动识别在HTC一部手机上停止。

我对代码进行了一些更新,但仍然存在几分钟后活动识别停止的问题。正如另一位成员所建议的,我还导出了 android-support-v4.jar android-support-v7-appcompat.jar 文件,但问题仍然存在。

手机的位置已开启且未处于省电模式。此外,我将我的SDK以及手机上的谷歌播放服务更新为最新版本,但几分钟后我的api客户端仍然断开连接。以下是我使用的代码文件。

请帮我纠正一下。我正在使用eclipse。

MyActiviy:

public class ActivityRecognitionService extends IntentService {

    private String TAG = "appLogs...";
    private long fName;

    public ActivityRecognitionService() {
        super("My Activity Recognition Service");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        if(ActivityRecognitionResult.hasResult(intent)){
            ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
            Log.i(TAG, getType(result.getMostProbableActivity().getType()) + "t" + result.getMostProbableActivity().getConfidence());
        }
    }

    private String getType(int type){
        if(type == DetectedActivity.UNKNOWN) 
            return "Unknown";
        else if(type == DetectedActivity.IN_VEHICLE)
            return "In Vehicle";
        else if(type == DetectedActivity.ON_BICYCLE)
            return "On Bicycle";
        else if(type == DetectedActivity.ON_FOOT)
            return "On Foot";
        else if(type == DetectedActivity.STILL)
            return "Still";
        else if(type == DetectedActivity.TILTING)
            return "Tilting";
        else if(type == DetectedActivity.RUNNING)
            return "Running";
        else if(type == DetectedActivity.WALKING)
            return "Walking";
        else
            return "";
    }

ActivityRecognitionService

msg.body.encoding # return "Base64"

1 个答案:

答案 0 :(得分:1)

正如我刚刚回答here,似乎没有办法解决。电话“静止”一段时间后,活动报告将停止。

如果您想录制即使手机“静止”,我也会看到两种方式:

1)完全依赖于ActivityRecognition API并记录“静止”,直到Google服务检测到SIGNIFICANT_MOTION并且ActivityRecognition开始向您发送新的更新;

2)编写自己的简单StillActivityRecognitionService,它在“官方”API没有更新时启动。该服务应该听取加速度计传感器,解释传感器事件(偏离平均值,峰值等)并发送它的“静止”/“不静止”的决定。