私はこの問題に関してGoogleで検索しましたが、 ソリューションを取得しませんでした。デバイスの位置の経度と緯度を取得しようとしています。 ユーザーはカメラから画像をクリックします。そのとき私は をGPSを使用している機器の緯度と時間に合わせて表示する必要があります。しかし、 は働いていません。ここでAndroidで緯度と経度を取得していない
私のコードです: -
public class MainActivity extends Activity {
EditText editAddress,editName;
ImageView ivPhoto;
Button btnTakePic,btnNext1;
Bitmap bitMap;
static int TAKE_PICTURE = 1;
protected LocationManager locationManager;
protected LocationListener locationListener;
protected Context context;
TextView txtLat;
String lat;
String provider;
protected double latitude,longitude;
protected boolean gps_enabled,network_enabled;
private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editAddress = (EditText)findViewById(R.id.edtAddress);
editName = (EditText)findViewById(R.id.edtName);
ivPhoto = (ImageView)findViewById(R.id.ivPhoto);
btnTakePic = (Button)findViewById(R.id.btnTakePic);
btnNext1 = (Button)findViewById(R.id.btnNext1);
btnTakePic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,TAKE_PICTURE);
}
});
btnNext1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent nextIntent = new Intent(MainActivity.this,ContactPersonDetail.class);
startActivity(nextIntent);
}
});
}
private void GetLocationLatLong() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new MyLocationListener());
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location!=null){
String message = String.format("Current Location \\n Longitude: %1$s \\n Latitude: %2$s",location.getLongitude(), location.getLatitude());
Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == TAKE_PICTURE && resultCode== RESULT_OK && intent != null){
// get bundle
Bundle extras = intent.getExtras();
// get bitmap
bitMap = (Bitmap) extras.get("data");
ivPhoto.setImageBitmap(bitMap);
GetLocationLatLong();
}
}
private class MyLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
String message = String.format("New Location \n Longitude: %1$s \n Latitude: %2$s", location.getLongitude(), location.getLatitude());
longitude = location.getLongitude();
latitude = location.getLatitude();
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
Log.d("Longittuteeeeeeeeeeee",message);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Toast.makeText(MainActivity.this, "Provider status changed",Toast.LENGTH_LONG).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(MainActivity.this,"Provider enabled by the user. GPS turned on", Toast.LENGTH_LONG).show();
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(MainActivity.this, "Provider disabled by the user. GPS turned off", Toast.LENGTH_LONG).show();
}
}
}
これらは、マニフェストに使用権限ある: - これらの権限で
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
<uses-permission android:name="android.permission.INTERNET"/>
、2つの権限(ACCESS_MOCK_LOCATION、 CONTROL_LOCATION_UPDATES)がエラーを出しています。許可で
エラー: -
アンドロイド許可使用しています:名=「android.permission.ACCESS_MOCK_LOCATION」
モック場所は唯一のテストやデバッグ専用 マニフェストで要求されなければなりません... (Ctrl + F1)モックロケーションプロバイダ(許可 android.permission.ACCESS_MOCK_LOCATIONを要求することによって)は、デバッグ ビルド(またはテスト) 。 Gradleプロジェクトでは、 は、テストまたはデバッグソースセットマニフェストファイルでこの権限を要求する必要があることを意味します。これを修正するには、デバッグ フォルダーに新しいマニフェストファイルを作成し、そこで要素を移動します。 Gradleプロジェクトの のデバッグマニフェストオーバーライドファイルへの一般的なパスは、 src/debug/AndroidManifest.xmlです。
ここで私が間違っていることを教えてください。
使用しているコードは、場所の変更があった場合に経度緯度取得するためですが、私はあなたがいることを必要としないと思います。あなたは単にこのリンクhttp://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/に従って、緯度と経度を取得することができます。あなただけがgetLatitudeとgetLongitudeメソッドに関連するコードが必要です –