2

I am writing code to retrieve lat and long from image capture. I can able to take image using camera event and onActivityResult.

eprotected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Uri _uri = null;
    Cursor cursor = null;

    try {
        final int PICK_IMAGE = 1;
        if (requestCode == PICK_IMAGE && data != null
                && data.getData() != null) {
            _uri = data.getData();

            if (_uri != null) {
                // User had pick an image.
                cursor = getContentResolver()
                        .query(_uri,
                                new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
                                null, null, null);
                cursor.moveToFirst();

                // Link to the image
                final String imageFilePath = cursor.getString(0);
                // Toast.makeText(getApplicationContext(), imageFilePath,
                // Toast.LENGTH_LONG).show();
                imageLocation= imageFilePath;

                File imgFile = new File(imageFilePath);
                if (imgFile.exists()) {
                    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
                    captureImage.setImageBitmap(myBitmap);

                }
                cursor.close();
            } else {

                // Toast.makeText(getApplicationContext(), getSdCard,
                // Toast.LENGTH_LONG).show();
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    } catch (Exception e) {
        if (cursor == null || cursor.equals("")) {
            String getSdCard = _uri.getPath();
            imageLocation= getSdCard;
            File imgFile = new File(getSdCard);
            if (imgFile.exists()) {

                Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

                captureImage.setImageBitmap(myBitmap);

            }
        }
        e.printStackTrace();
    }
}

From this how come we get the latitude and longitude from the image. i searched a while, i cant able to get the location.

4

3 回答 3

1

相机可能会或可能不会通过图像捕获位置数据,这取决于用户的相机应用程序以及他们使用的任何设置(您可以禁用地理标记照片,默认情况下在大多数 Android 手机上它被禁用)。如果图像附加了任何位置数据,您可以使用带有图像路径的ExifInterface或使用lat/lng 列使用MediaStore.Images.Media 数据库来找到它。

您永远无法保证您将始终获得任何照片的位置数据。提供程序(gps/wifi/cell)可能被禁用,地理标记可能被禁用,即使两者都启用,手机也可能无法获取足够近且足够准确的地理点。

于 2013-07-17T14:14:47.070 回答
1

What Monkeyless suggested is right, use the Exifinterface. There is a working example in the accepted answer to here:

How to get the latititude and longitude of an image in sdcard to my application?

于 2013-07-17T18:26:36.853 回答
0

当您通过移动设备捕获图像时,它通常仅使用捕获时刻的日期和时间将图像保存在您的移动设备上。如果要为图片添加坐标,则必须在捕获期间使用 Android 中的 LocationManager 类。通过这个,您可以获得捕获图像的长/纬度坐标。

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

请注意,如果您想使用上述代码段,您必须在 Android 清单文件中包含下一个权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

在这里阅读更多:android位置策略

于 2013-07-17T14:13:03.797 回答