アクティビティで GoogleApiClient を使用していたときに機能していましたが、それをサービスに移動し、onConnected が呼び出されていません。
public class StepsMonitoringService extends Service implements GoogleApiClient.ConnectionCallbacks {
private GoogleApiClient mClient;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
mClient = new GoogleApiClient.Builder(this).addApi(Fitness.HISTORY_API)
.addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ))
.addConnectionCallbacks(this).build();
mClient.connect();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mClient.disconnect();
}
@Override
public void onConnected(Bundle connectionHint) {
// NOT being called!! WHY??
}
@Override
public void onConnectionSuspended(int cause) {
}
}
アイデアはありますか?私は何を間違っていますか?GoogleApiClient を Service で動作させた人はいますか?
サービスはアクティビティから呼び出されます
public class MainActivity extends FragmentActivity {
private TextView mStepsView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, StepsMonitoringService.class);
startService(intent);
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("StepMonitoringServiceIntent"));
mStepsView = (TextView) findViewById(R.id.steps);
}
private void displayOnUI(String msg) {
mStepsView.setText(msg + "\n" + mStepsView.getText());
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
long steps = intent.getLongExtra("steps", 0);
displayOnUI(steps + " steps");
}
};
}
デバッグ中に、サービスの onCreate が呼び出されるのを確認できますが、onConnected は呼び出されません。私が見ることができるログには特別なものはありません。