0

GooglePlayServices は最近、ユーザーのアクティビティを検出する方法から、ActivityRecognitionClient の使用から ActivityRecognitionApi へと変更されました。私は見つけることができるすべての例に従いましたが、何かを見落としているに違いありません。

GoogleApiClient.Builder(mContext).addApi(ActivityRecognition.API)...build() を呼び出した後、接続コールバック メソッドの 1 つが呼び出されることを期待していました。すべてのコールバック メソッドにロギングとブレークポイントがありますが、いずれも呼び出されません。

OnReceive() と CallClient() は期待どおりに呼び出され、マニフェスト ファイルには次のものが含まれます。

私は何が欠けていますか?これまで無駄にしてきた時間を考えると、この問題の根底に到達したいと思います。

(PSこれは私自身のロギングライブラリです - それは問題の一部ではありません)

public class BootAtStartupReceiver extends BroadcastReceiver implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener,  GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener{



private final String TAG = getClass().getName();
private PendingIntent mpIntent;
private static GoogleApiClient mGoogleApiClient;
private Context mContext;

@Override
public void onReceive(Context context, Intent intent) {

    Logging.log(Logging.enumLoggingLevel.d,TAG,"inside onReceive: " + intent.getAction());
    if ((intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) || (intent.getAction().equals(BroadcastIntentConstants.ACTIVITY_FIRST_TIME_CALL_SERVICE)))
    {
        mContext = context;
        callClient();
    }
}


private void callClient() {

    Logging.log(Logging.enumLoggingLevel.d,TAG,"inside callClient");

    int resp = GooglePlayServicesUtil.isGooglePlayServicesAvailable(mContext);
    if (resp == ConnectionResult.SUCCESS) {

        mGoogleApiClient = new GoogleApiClient.Builder(mContext)
                .addApi(ActivityRecognition.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();

    } else {
        Logging.log(Logging.enumLoggingLevel.e, getClass().getName(), "Google play Services are not available.");
    }

}

@Override
public void onConnected(Bundle bundle) {
    Logging.log(Logging.enumLoggingLevel.d,TAG,"inside onConnected");

    Intent intent = new Intent(mContext, ActivityRecognitionIntentService.class);
    mpIntent = PendingIntent.getService(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(mGoogleApiClient, 1000, mpIntent);
}

@Override
public void onDisconnected() {
    Logging.log(Logging.enumLoggingLevel.d,TAG,"inside onDisconnected");
}

@Override
public void onConnectionSuspended(int i) {
    Logging.log(Logging.enumLoggingLevel.d,TAG,"inside onConnectionSuspended");
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    Logging.log(Logging.enumLoggingLevel.d,TAG,"inside onConnectionFailed");
}

}

4

1 に答える 1

0

ビルド後に connect() の呼び出しがありませんか? connect を呼び出さない限り、コールバックは起動しません。

mGoogleApiClient.connect() 
于 2015-01-19T17:44:26.633 に答える