利用可能かどうかを確認する方法LocationManager.NETWORK_PROVIDER
は?
を有効にしましAndroidManifest.xml
たが、コードでそれを確認する必要があり、使用できない場合はGPS_PROVIDER
。誰かが私を助けることができますか?
利用可能かどうかを確認する方法LocationManager.NETWORK_PROVIDER
は?
を有効にしましAndroidManifest.xml
たが、コードでそれを確認する必要があり、使用できない場合はGPS_PROVIDER
。誰かが私を助けることができますか?
LocationManager.NETWORK_PROVIDERが使用可能かどうかを確認するにはどうすればよいですか?
このパートを使用して、ネットワークプロバイダーが有効になっているかどうかを確認します。
network_enabled=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
これはブール値を返します:
true-有効になっている場合。
false-有効になっていません。
さらに、GPSプロバイダーが有効になっているかどうかを確認します。
gps_enabled=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
これはブール値を返します:
true-有効になっている場合。
false-有効になっていません。
ユーザーにネットワークまたはGPSプロバイダーを有効にする場合は、次のコードを使用してユーザーを設定ページにリダイレクトします。
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
ここではいつも少し奇妙なので;=)
ネットワークプロバイダーの可用性を確認するために、独自のコードを作成しました。
これをonCreate()メソッドに入れます。
checkIfNetworkLocationAvailable(mContext_);
そしてこれはあなたのコードのどこかで;=)
/**
* checks if NETWORK LOCATION PROVIDER is available
*/
private void checkIfNetworkLocationAvailable(Context context) {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean networkLocationEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!networkLocationEnabled){
//show dialog to allow user to enable location settings
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(mContext_.getString(R.string.txtTip));
dialog.setMessage(R.string.msgLocationServicesDisabled);
dialog.setPositiveButton(mContext_.getString(R.string.txtYes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);
}
});
dialog.setNegativeButton(mContext_.getString(R.string.txtNo), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//nothing to do
}
});
dialog.show();
}
}
楽しんでください、これが誰かに役立つことを願っています:)まさにそのコードを検索していました:=)
乾杯 :)
ネットワークプロバイダーやGPSプロバイダーを使用して位置情報を取得するためのコードは次のとおりです
private Location getLocation() {
Location gpslocation = null;
Location networkLocation = null;
if(locMan==null){
locMan = (LocationManager) getApplicationContext() .getSystemService(Context.LOCATION_SERVICE);
}
try {
if(locMan.isProviderEnabled(LocationManager.GPS_PROVIDER)){
locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000, 1, gpsListener);
gpslocation = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
if(locMan.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000, 1, gpsListener);
networkLocation = locMan.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
} catch (IllegalArgumentException e) {
//Log.e(ErrorCode.ILLEGALARGUMENTERROR, e.toString());
Log.e("error", e.toString());
}
if(gpslocation==null && networkLocation==null)
return null;
if(gpslocation!=null && networkLocation!=null){
if(gpslocation.getTime() < networkLocation.getTime()){
gpslocation = null;
return networkLocation;
}else{
networkLocation = null;
return gpslocation;
}
}
if (gpslocation == null) {
return networkLocation;
}
if (networkLocation == null) {
return gpslocation;
}
return null;
}
ここでは、GPSプロバイダーが有効になっているかどうかを確認し、gpsLocationに場所を取得します。ネットワークプロバイダーを使用して場所を取得している場合は、場所オブジェクトが返す速度を確認します。
プロバイダーの1つが有効になっている場合、そのロケーションオブジェクトが返されます