-1
融合ロケーションプロバイダを使用してアプリで連続的な位置情報を取得しようとしています。何とかLollipopでうまくいきましたが、マシュマロでは位置情報の更新は表示されません。Android APIレベル23で融合ロケーションプロバイダを実装する方法
以下は私のcode.Plzです。私は何が間違っているのか教えてください。
public class Gps extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
TextView lati, longi;
LocationRequest lr;
GoogleApiClient mGoogleApiClient;
double latitude = 0, longitude = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gps);
lati = (TextView) findViewById(R.id.lati);
longi = (TextView) findViewById(R.id.longi);
mGoogleApiClient = new GoogleApiClient.Builder(getApplicationContext())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}
@Override
public void onConnected(@Nullable Bundle bundle) {
lr = LocationRequest.create();
lr.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
lr.setInterval(1000);
if (Build.VERSION.SDK_INT >= 23) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{
Manifest.permission.ACCESS_FINE_LOCATION
}, 1);
return;
}
}
else{
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, lr,this);
}
}
@Override
public void onLocationChanged(Location location) {
latitude = location.getLatitude();
longitude = location.getLongitude();
Geocoder gc = new Geocoder(Gps.this, Locale.getDefault());
String locality = null;
String sub = null;
try {
List<Address> addrList;
addrList = gc.getFromLocation(latitude, longitude, 2);
if (addrList.size() > 0) {
Address adr = addrList.get(0);
locality = adr.getLocality();
sub = adr.getSubLocality();
lati.setText(locality);
longi.setText(sub);
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 2:
if(){
}
else{
}
}
}
}
私が粗すぎる場所に対する要求を追加、今言ってくれてありがとうしかし、どのようにonRequestPermissionsResultに位置情報の更新を要求するために、plzは私に知らせて。 – Digvijay
その機能で 'LocationServices.FusedLocationApi.requestLocationUpdates()'を呼び出してください。それ以外の場合は、API 23+では呼び出されません。 –
LocationServices.FusedLocationApi.requestLocationUpdates(mGo ogleApiClient、lr、this)を追加しようとしています。 OnRequestPermissionResultでは、しかし、add permission checkというエラーを表示していますが、私はすでにパーミッションをチェックしています。 – Digvijay