Java 使用fitapi的进度条

Java 使用fitapi的进度条,java,android,api,Java,Android,Api,我正在尝试使用健身api制作一个步数计数器,我用它来计算我的步数,并将应用程序连接到谷歌服务。现在我正在尝试为我的应用程序制作一个进度条,但我不知道如何使它与健身api的值一起工作。这是我迄今为止编写的代码。对不起,我把这个问题问了2x(我以前搜索过) 公共类MainActivity扩展了AppCompatActivity实现OnDataPointListener, GoogleAppClient.ConnectionCallbacks, GoogleAppClient.OnConnection

我正在尝试使用健身api制作一个步数计数器,我用它来计算我的步数,并将应用程序连接到谷歌服务。现在我正在尝试为我的应用程序制作一个进度条,但我不知道如何使它与健身api的值一起工作。这是我迄今为止编写的代码。对不起,我把这个问题问了2x(我以前搜索过)

公共类MainActivity扩展了AppCompatActivity实现OnDataPointListener, GoogleAppClient.ConnectionCallbacks, GoogleAppClient.OnConnectionFailedListener{ 私有静态最终int请求_OAUTH=1; 私有静态最终字符串AUTH_PENDING=“AUTH_state_PENDING”; 私有布尔authInProgress=false; 私有GoogleAppClient客户端; 私人ProgressBar ProgressBar; 私有值progressStatus=0; 私有处理程序=新处理程序(); 私有文本视图文本视图; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 如果(savedInstanceState!=null){ authInProgress=savedInstanceState.getBoolean(AUTH_挂起); } mApiClient=new GoogleAppClient.Builder(此) .addApi(健身传感器\ API) .addScope(新范围(范围.适应度\活动\读\写)) .addConnectionCallbacks(此) .addOnConnectionFailedListener(此) .build(); } @凌驾 受保护的void onStart(){ progressStatus=0; super.onStart(); mApiClient.connect(); } @凌驾 未连接的公共空间(捆绑包){ DataSourcesRequest DataSourcesRequest=新建DataSourcesRequest.Builder() .setDataTypes(数据类型.TYPE\步骤\计数\累积) .setDataSourceTypes(DataSource.TYPE_原始) .build(); ResultCallback数据源ResultCallback=新建ResultCallback(){ @凌驾 public void onResult(DataSourcesResult DataSourcesResult){ 对于(DataSource DataSource:dataSourcesResult.getDataSources()){ if(DataType.TYPE\u STEP\u COUNT\u CUMULATIVE.equals(dataSource.getDataType())){ registerFitnessDataListener(数据源,数据类型。类型\步骤\计数\累积); } } } }; Fitness.SensorsApi.findDataSources(mApiClient,dataSourceRequest) .setResultCallback(数据源ResultCallback); } 私有void registerFitnessDataListener(数据源数据源,数据类型数据类型){ SensorRequest=new SensorRequest.Builder() .setDataSource(数据源) .setDataType(数据类型) .设置采样率(3,时间单位:秒) .build(); Fitness.SensorsApi.add(mApiClient、request、this) .setResultCallback(新的ResultCallback(){ @凌驾 公共void onResult(状态){ if(status.issucess()){ Log.e(“GoogleFit”、“SensorApi成功添加”); } } }); } @凌驾 公共空间连接暂停(int i){ } @凌驾 公共无效onConnectionFailed(ConnectionResult ConnectionResult){ 如果(!authInProgress){ 试一试{ authInProgress=true; connectionResult.startResolutionForResult(MainActivity.this,REQUEST_OAUTH); }catch(IntentSender.SendIntentException{} }否则{ Log.e(“谷歌拟合”、“authInProgress”); } } @凌驾 受保护的void onActivityResult(int请求代码、int结果代码、意图数据){ if(requestCode==REQUEST\u OAUTH){ authInProgress=false; if(resultCode==RESULT\u OK){ 如果(!mApiClient.isConnecting()&&!mApiClient.isConnected()){ mApiClient.connect(); } }else if(resultCode==RESULT\u取消){ Log.e(“GoogleFit”、“结果被取消”); } }否则{ Log.e(“GoogleFit”,“请求代码不是请求”oauth); } } @凌驾 公共无效数据点(数据点数据点){ for(最后一个字段:dataPoint.getDataType().getFields()){ 最终值=dataPoint.getValue(字段); runOnUiThread(新的Runnable(){ @凌驾 公开募捐{ Toast.makeText(getApplicationContext(),“Field:”+Field.getName()+“Value:”+Value,Toast.LENGTH_SHORT).show(); } }); progressBar=(progressBar)findViewById(R.id.progressBar3); textView=(textView)findViewById(R.id.textView); 新线程(newrunnable()){ @凌驾 公开募捐{ while(progressStatus){ 进展状态=价值; handler.post(新的Runnable(){ 公开募捐{ progressBar.setProgress(progressStatus); textView.setText(“进度:+progressStatus+”/“+progressBar.getMax()); } }); } 试试{Thread.sleep(100);} 捕捉(中断异常e){ e、 printStackTrace(); } } }); } } @凌驾 受保护的void onStop(){ super.onStop(); Fitness.SensorsApi.remove(mApiClient,this) .setResultCallback(新的ResultCallback(){ @凌驾 公共void onResult(状态){ if(status.issucess()){ mApiClient.disconnect(); } } }); } @凌驾 SaveInstanceState上受保护的无效(束超出状态){ super.onSaveInstanceState(超出状态); putBoolean(AUTH_挂起,authInProgress); } }

`

公共类MainActivity扩展了AppCompatActivity实现OnDataPointListener,
GoogleapClient。
`public class MainActivity extends AppCompatActivity implements OnDataPointListener,
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener {


private static final int REQUEST_OAUTH = 1;
private static final String AUTH_PENDING = "auth_state_pending";
private boolean authInProgress = false;
private GoogleApiClient mApiClient;
private ProgressBar progressBar;
private Value progressStatus = 0;
private Handler handler = new Handler();
private  TextView textView;





@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState != null){
        authInProgress = savedInstanceState.getBoolean(AUTH_PENDING);
    }

    mApiClient = new GoogleApiClient.Builder(this)
            .addApi(Fitness.SENSORS_API)
            .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();


}
@Override
protected void onStart(){
    progressStatus = 0;
    super.onStart();
    mApiClient.connect();
}

@Override
public void onConnected(Bundle bundle) {
    DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder()
            .setDataTypes( DataType.TYPE_STEP_COUNT_CUMULATIVE )
            .setDataSourceTypes( DataSource.TYPE_RAW )
            .build();

    ResultCallback<DataSourcesResult> dataSourcesResultCallback = new ResultCallback<DataSourcesResult>() {
        @Override
        public void onResult(DataSourcesResult dataSourcesResult) {
            for( DataSource dataSource : dataSourcesResult.getDataSources() ) {
                if( DataType.TYPE_STEP_COUNT_CUMULATIVE.equals( dataSource.getDataType() ) ) {
                    registerFitnessDataListener(dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE);
                }
            }
        }
    };

    Fitness.SensorsApi.findDataSources(mApiClient, dataSourceRequest)
            .setResultCallback(dataSourcesResultCallback);
}
private void registerFitnessDataListener(DataSource dataSource, DataType dataType) {

    SensorRequest request = new SensorRequest.Builder()
            .setDataSource( dataSource )
            .setDataType( dataType )
            .setSamplingRate( 3, TimeUnit.SECONDS )
            .build();

    Fitness.SensorsApi.add( mApiClient, request, this )
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    if (status.isSuccess()) {
                        Log.e( "GoogleFit", "SensorApi successfully added" );
                    }
                }
            });
}

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    if(!authInProgress){
        try{
            authInProgress = true;
            connectionResult.startResolutionForResult( MainActivity.this,REQUEST_OAUTH);
        }  catch (IntentSender.SendIntentException e){}

    }else {
        Log.e( "GoogleFit" , "authInProgress" );
    }


}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( requestCode == REQUEST_OAUTH ) {
        authInProgress = false;
        if( resultCode == RESULT_OK ) {
            if( !mApiClient.isConnecting() && !mApiClient.isConnected() ) {
                mApiClient.connect();
            }
        } else if( resultCode == RESULT_CANCELED ) {
            Log.e( "GoogleFit", "RESULT_CANCELED" );
        }
    } else {
        Log.e("GoogleFit", "requestCode NOT request_oauth");
    }
}
@Override
public void onDataPoint(DataPoint dataPoint) {
    for( final Field field : dataPoint.getDataType().getFields() ) {
        final Value value = dataPoint.getValue( field );
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getApplicationContext(), "Field: " + field.getName() + " Value: " + value, Toast.LENGTH_SHORT).show();
            }
        });

        progressBar = (ProgressBar) findViewById(R.id.progressBar3);
        textView = (TextView) findViewById(R.id.textView);
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (progressStatus){
                    progressStatus = value;
                    handler.post(new Runnable() {
                        public void run() {
                                progressBar.setProgress(progressStatus);
                                textView.setText("Progress:"+progressStatus+"/"+progressBar.getMax());
                            }
                        });
                    }
                    try{Thread.sleep(100);}
                    catch (InterruptedException e){
                        e.printStackTrace();
                    }
                }
            });
        }




}


@Override
protected void onStop() {
    super.onStop();

    Fitness.SensorsApi.remove( mApiClient, this )
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    if (status.isSuccess()) {
                        mApiClient.disconnect();
                    }
                }
            });
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean(AUTH_PENDING, authInProgress);
}
public class MainActivity extends AppCompatActivity implements OnDataPointListener,
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener {


private static final int REQUEST_OAUTH = 1;
private static final String AUTH_PENDING = "auth_state_pending";
private boolean authInProgress = false;
private GoogleApiClient mApiClient;
private ProgressBar progressBar;
private int progressStatus=0;
private Handler handler= new Handler();
private  TextView textView;
private Button toastButton;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState != null){
        authInProgress = savedInstanceState.getBoolean(AUTH_PENDING);
    }

    mApiClient = new GoogleApiClient.Builder(this)
            .addApi(Fitness.SENSORS_API)
            .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    toastButton = (Button) findViewById(R.id.show_toast);
    progressBar = (ProgressBar) findViewById(R.id.progressBar3);


}
@Override
protected void onStart(){
    super.onStart();
    mApiClient.connect();
}

@Override
public void onConnected(Bundle bundle) {
    DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder()
            .setDataTypes( DataType.TYPE_STEP_COUNT_CUMULATIVE )
            .setDataSourceTypes( DataSource.TYPE_RAW )
            .build();

    ResultCallback<DataSourcesResult> dataSourcesResultCallback = new ResultCallback<DataSourcesResult>() {
        @Override
        public void onResult(DataSourcesResult dataSourcesResult) {
            for( DataSource dataSource : dataSourcesResult.getDataSources() ) {
                if( DataType.TYPE_STEP_COUNT_CUMULATIVE.equals( dataSource.getDataType() ) ) {
                    registerFitnessDataListener(dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE);
                }
            }
        }
    };

    Fitness.SensorsApi.findDataSources(mApiClient, dataSourceRequest)
            .setResultCallback(dataSourcesResultCallback);
}
private void registerFitnessDataListener(DataSource dataSource, DataType dataType) {

    SensorRequest request = new SensorRequest.Builder()
            .setDataSource( dataSource )
            .setDataType( dataType )
            .setSamplingRate( 3, TimeUnit.SECONDS )
            .build();

    Fitness.SensorsApi.add( mApiClient, request, this )
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    if (status.isSuccess()) {
                        Log.e( "GoogleFit", "SensorApi successfully added" );
                    }
                }
            });
}

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    if(!authInProgress){
        try{
            authInProgress = true;
            connectionResult.startResolutionForResult( MainActivity.this,REQUEST_OAUTH);
        }  catch (IntentSender.SendIntentException e){}

    }else {
        Log.e( "GoogleFit" , "authInProgress" );
    }


}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( requestCode == REQUEST_OAUTH ) {
        authInProgress = false;
        if( resultCode == RESULT_OK ) {
            if( !mApiClient.isConnecting() && !mApiClient.isConnected() ) {
                mApiClient.connect();
            }
        } else if( resultCode == RESULT_CANCELED ) {
            Log.e( "GoogleFit", "RESULT_CANCELED" );
        }
    } else {
        Log.e("GoogleFit", "requestCode NOT request_oauth");
    }
}
@Override
public void onDataPoint(DataPoint dataPoint) {
    for( final Field field : dataPoint.getDataType().getFields() ) {
        final Value value = dataPoint.getValue( field );
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView = (TextView) findViewById(R.id.textView);
                textView.setText(field.getName()+ ": " + value);
                textView = (TextView) findViewById(R.id.textView);
                progressStatus = value.asInt();
                handler.post(new Runnable() {
                                public void run() {
                                    progressBar.setProgress(progressStatus);
                                }
                            });
            }
        });

        toastButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Toast.makeText(getApplicationContext(), "Field: " + field.getName() + " Value: " + value, Toast.LENGTH_SHORT).show();
            }
        });


    }
}










@Override
protected void onStop() {
    super.onStop();

    Fitness.SensorsApi.remove( mApiClient, this )
            .setResultCallback(new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    if (status.isSuccess()) {
                        mApiClient.disconnect();
                    }
                }
            });
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean(AUTH_PENDING, authInProgress);
   }
}