Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从拍摄的图像中获取纬度和经度——Android_Android_Android Location - Fatal编程技术网

如何从拍摄的图像中获取纬度和经度——Android

如何从拍摄的图像中获取纬度和经度——Android,android,android-location,Android,Android Location,我正在编写代码从图像捕获中检索lat和long。我可以使用camera事件和onActivityResult拍摄图像 eprotected void onActivityResult(int requestCode, int resultCode, Intent data) { Uri _uri = null; Cursor cursor = null; try { final int PICK_IMAGE = 1; if (reques

我正在编写代码从图像捕获中检索lat和long。我可以使用camera事件和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();
    }
}

从这幅图中我们可以得到经纬度。我找了一会儿,找不到位置

当您通过移动设备拍摄图像时,它通常只使用拍摄时刻的日期和时间将图像保存到手机上。如果要向图片添加坐标,则必须在捕获过程中使用Android中的LocationManager类。通过此操作,您可以获得捕获图像的长/纬度坐标

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
请注意,如果要使用上述代码段,您必须在Android清单文件中包含下一个权限

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


阅读此处的更多信息:

相机可能会也可能不会捕获图像中的位置数据,这取决于用户的相机应用程序和他们使用的任何设置(您可以禁用地理标记照片,默认情况下,在大多数安卓手机上是禁用的)。如果将任何位置数据附着到图像,则可以使用图像路径或使用


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

Monkeyless的建议是正确的,请使用ExiFinInterface。这里的公认答案中有一个工作示例:


从图像中“获取纬度和经度”是什么意思?人们可以使用
LocationManager
获取该信息,但这与位置无关。您的意思是在拍照时获取当前设备的位置吗?我不确定,相机是否使用纬度和经度位置捕获图像。我不熟悉这个话题。你只能通过gps和/或wi-fi获取位置,因此,如果在拍摄照片的地方启用了这些功能,那么你可以通过LocationManager获取lat和long,但是如果你的意思是通过分析该图像来获取lat和long,这应该非常困难,伙计,你想从图像中获取lat lng吗?你的问题是什么意思?谢谢你的推荐。我还有一个问题要问,是否可以务实地打开相机设置。我找了一会儿,找不到合适的指导。你能帮忙吗。如果我想到任何东西,我会把它添加到你的另一个问题中: