Ich habe eine benutzerdefinierte DataSource für Schrittzähler implementiert, und wenn ich einen Listener registrieren möchte, schlägt es mit Listener nicht registriert und Statuscode = 13. Wenn ich die Funktion findDataSources() verwende, funktioniert es gut, aber ich wollte einen Listener auf meiner Datenquelle hinzufügen. Weißt du, was das Problem ist? Vielen Dank! Hier"Listener not registered" mit Statuscode 13 mit SensorsApi
ist der Code:
public GoogleApiClient buildFitnessClient() {
mFitnessClient = new GoogleApiClient.Builder(context)
.addApi(Fitness.SENSORS_API)
.addApi(Fitness.SESSIONS_API)
.addApi(Fitness.RECORDING_API)
.addApi(Fitness.HISTORY_API)
.addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
.useDefaultAccount()
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle bundle) {
Log.d(TAG, "Connected to fitness API");
registerFitnessDataListener();
}
@Override
public void onConnectionSuspended(int i) {
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult result) {
Log.d(TAG, "Fitness Connection failed");
if (!result.hasResolution()) {
retryFitnessConnect();
return;
}
}
})
.build();
mFitnessClient.connect();
return mFitnessClient;
}
private void registerFitnessDataListener() {
mListener = new OnDataPointListener() {
@Override
public void onDataPoint(DataPoint dataPoint) {
for (Field field : dataPoint.getDataType().getFields()) {
Value val = dataPoint.getValue(field);
Log.i(TAG, "Detected DataPoint field: " + field.getName());
Log.i(TAG, "Detected DataPoint value: " + val);
Log.i(TAG, "Detected DataPoint startTime: " + dataPoint.getStartTime(TimeUnit.MILLISECONDS));
}
}
};
DataSource dataSourceSteps=new DataSource.Builder()
.setAppPackageName("myPackageName")
.setDataType(DataType.TYPE_STEP_COUNT_DELTA)
.setName("steps")
.setType(DataSource.TYPE_RAW)
.build();
Fitness.SensorsApi.add(
mFitnessClient,
new SensorRequest.Builder()
.setDataSource(dataSourceSteps)
.setSamplingRate(5, TimeUnit.SECONDS)
.build(),
mListener)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
Log.i(TAG, "Listener registered!");
} else {
Log.i(TAG, "Listener not registered "+status.getStatusCode());
}
}
});
}
Dies ist das gleiche wie ich, ist der einzige Unterschied, dass ich eine Datenquelle und fügen sie in SensorRequest erstellen und dann bekomme ich diesen Fehler . –