我的代码未显示活动识别服务的结果。 我该如何解决我的问题?
这是我的代码ActivityRecognizeService.java
package com.kobe.internship.realtimeactivity;
import android.app.IntentService;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.util.Log;
import com.google.android.gms.location.ActivityRecognitionResult;
import com.google.android.gms.location.DetectedActivity;
import java.util.List;
public class ActivityRecognizedService extends IntentService {
private static final String TAG = "ActivityRecognizedServi";
public ActivityRecognizedService(){
super("ActivityRecognizedService");
}
public ActivityRecognizedService(String name){
super(name);
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
if(ActivityRecognitionResult.hasResult(intent)){
ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
handleDetectedActivity(result.getProbableActivities());
}
}
private void handleDetectedActivity(List<DetectedActivity> probableActivities){
for (DetectedActivity activity: probableActivities) {
switch (activity.getType()) {
case DetectedActivity.IN_VEHICLE: {
Log.d(TAG, "handleDetectedActivity: IN_VEHICLE: " +activity.getConfidence());
break;
}
case DetectedActivity.ON_BICYCLE: {
Log.d(TAG, "handleDetectedActivity: ON_BYCYCLE: " + activity.getConfidence());
break;
}
case DetectedActivity.ON_FOOT: {
Log.d(TAG, "handleDetectedActivity: ON_FOOT: " + activity.getConfidence());
break;
}
case DetectedActivity.RUNNING: {
Log.d(TAG, "handleDetectedActivity: RUNNING: " + activity.getConfidence());
break;
}
case DetectedActivity.STILL: {
Log.d(TAG, "handleDetectedActivity: STILL: "+ activity.getConfidence());
break;
}
case DetectedActivity.WALKING: {
Log.d(TAG, "handleDetectedActivity: WALKING: " + activity.getConfidence());
break;
}
case DetectedActivity.TILTING: {
Log.d(TAG, "handleDetectedActivity: TILING: " + activity.getConfidence());
break;
}
case DetectedActivity.UNKNOWN: {
Log.d(TAG, "handleDetectedActivity: UNKNOWN: " + activity.getConfidence());
break;
}
}
}
}
}
这是我的MainActivity.java
package com.kobe.internship.realtimeactivity;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.ActivityRecognition;
public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{
public GoogleApiClient mApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mApiClient = new GoogleApiClient.Builder(MainActivity.this)
.addApi(ActivityRecognition.API)
.addConnectionCallbacks(MainActivity.this)
.addOnConnectionFailedListener(MainActivity.this)
.build();
}
@Override
public void onConnected(@Nullable Bundle bundle) {
Intent intent = new Intent(MainActivity.this, ActivityRecognizedService.class);
PendingIntent pendingIntent = PendingIntent.getService(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(mApiClient, 2000, pendingIntent);
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
}
AndroidMainifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kobe.internship.realtimeactivity">
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".ActivityRecognizedService"/>
</application>
</manifest>
build.gradle(项目)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
buildToolsVersion '27.0.1'
defaultConfig {
applicationId "com.kobe.internship.realtimeactivity"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.0.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.android.gms:play-services:11.+'
testImplementation 'junit:junit:4.12'
}