Я пишу Android программу для получения определенных c данных о состоянии здоровья. Я прочитал документацию Google для получения данных от пользователей, но не могу получить в конце. Может ли кто-нибудь помочь решить эту проблему самым простым способом java. Мой текущий код прикреплен здесь с помощью.
public class MainActivity extends AppCompatActivity {
int GOOGLE_FIT_PERMISSIONS_REQUEST_CODE = 156;
GoogleSignInAccount googleSignInAccount=null;
//Request Data for STEP_COUNT_DELTA with READ permissions
//FitnessOptions - API
FitnessOptions fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.build();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get instance of Google Account
googleSignInAccount = googleSignInAccount(fitnessOptions);
if (!GoogleSignIn.hasPermissions(googleSignInAccount, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this, // your activity
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE, // e.g. 1
googleSignInAccount,
fitnessOptions);
} else {
accessGoogleFit();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == GOOGLE_FIT_PERMISSIONS_REQUEST_CODE) {
accessGoogleFit();
}
}
}
private void accessGoogleFit() {
Calendar cal = Calendar.getInstance();
Date date = new Date();
cal.setTime(date);
long endTime = cal.getTimeInMillis();
cal.add(Calendar.WEEK_OF_YEAR, -1);
long startTime = cal.getTimeInMillis();
//SessionReadRequest sessionReadRequest = new SessionReadRequest.Builder().read(DataType.AGGREGATE_ACTIVITY_SUMMARY).setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS).build();
DataReadRequest dataReadRequest = new DataReadRequest.Builder().read(DataType.AGGREGATE_ACTIVITY_SUMMARY).setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS).build();
Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this)).readData(dataReadRequest)
.addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
@Override
public void onSuccess(DataReadResponse dataReadResponse) {
List<DataSet> dataSets = dataReadResponse.getDataSets();
for(DataSet dataSet: dataSets){
for(Field field: dataSet.getDataType().getFields()){
if(field.getName().equalsIgnoreCase(FitnessActivities.SLEEP)){
Toast.makeText(MainActivity.this, "ENCONTRADO", Toast.LENGTH_LONG).show();
}
}
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
public GoogleSignInAccount googleSignInAccount(FitnessOptions fitnessOptions) {
GoogleSignInAccount account = GoogleSignIn.getAccountForExtension(this, fitnessOptions);
return account;
}
}
К этому коду архивируется аутентификация Google с пользователем перед доступом google fit -api , весь доступ api реализован на accessGooogleFit () функция