2014-12-31 57 views
-1

已經試圖手動將示例從http://developer.android.com/training/location/activity-recognition.html移植到新的GoogleApiClient。意圖永遠不會使用新的GoogleApiClient觸發ActivityRecognition

不幸的是我有時只有1次從ActivityRecognition更新,大部分時間沒有更新。

作爲一個試圖找到問題,我把代碼煮成儘可能少的行。對於谷歌沒有檢查播放服務,並沒有任何錯誤處理:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Set the main layout 
    setContentView(R.layout.activity_main); 


    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(ActivityRecognition.API) 
      .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
       @Override 
       public void onConnected(Bundle bundle) { 
        Log.d("ActivityRecognition", "Google Play Services connected"); 
        Intent i = new Intent(MainActivity.this, ActivityRecognitionIntentService.class); 
        PendingIntent mActivityRecognitionPendingIntent = PendingIntent.getService(MainActivity.this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 
        ActivityRecognition.ActivityRecognitionApi. 
          requestActivityUpdates(mGoogleApiClient, 1000, mActivityRecognitionPendingIntent); 
       } 

       @Override 
       public void onConnectionSuspended(int i) { 

       } 
      }) 
      .build(); 

    mGoogleApiClient.connect(); 

} 

的ActivityRecognitionIntentService具有從樣本的所有代碼,但增加了一個日誌的希望onHandleIntent開始看到「東西」發生。

public class ActivityRecognitionIntentService extends IntentService { 

    ... 

    /** 
    * Called when a new activity detection update is available. 
    */ 
    @Override 
    protected void onHandleIntent(Intent intent) { 

     Log.d("ActivityRecognitionIntentService", "onHandleIntent " + ActivityRecognitionResult.hasResult(intent)); 

     ... 

    } 
} 

最後清單:

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="21" /> 
    <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION"/> 

    <application android:label="@string/app_name" 
     android:icon="@drawable/ic_launcher" 
     android:theme="@style/Theme.Sample"> 

     <activity android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:uiOptions="splitActionBarWhenNarrow" android:description="@string/app_description"> 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <service android:name=".ActivityRecognitionIntentService"></service> 

    </application> 

</manifest> 

任何想法我在做什麼錯誤認識。

PendingIntent.getService(MainActivity.this, (int)Math.random(), i, PendingIntent.FLAG_UPDATE_CURRENT); 

的意圖開始firering:

回答

1

如果我更改代碼,似乎問題是否曾與的PendingIntent

PendingIntent.getService(MainActivity.this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 

的建設做。

從上的getService()關於所述第二參數的文檔:

發件人

所以

requestCode私人請求碼是此參數有任何影響無明顯原因wheter或不是意圖被解僱。

相關問題