Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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_Video_Geolocation - Fatal编程技术网

如何在Android中获取视频的位置数据?

如何在Android中获取视频的位置数据?,android,video,geolocation,Android,Video,Geolocation,我正在尝试获取存储在应用程序用户手机上的视频文件的元数据。我可以得到文件名、id、拍摄日期等等。但是,纬度和经度数据始终返回为0.0。我指的是: developer.android.com/reference/android/provider/MediaStore.Video.VideoColumns.html 是,我已在设置中启用“使用位置”。我有一个非常类似的功能,这对图像工作良好 public void getLocalVideoFiles(Context context) { C

我正在尝试获取存储在应用程序用户手机上的视频文件的元数据。我可以得到文件名、id、拍摄日期等等。但是,纬度和经度数据始终返回为0.0。我指的是:

developer.android.com/reference/android/provider/MediaStore.Video.VideoColumns.html

是,我已在设置中启用“使用位置”。我有一个非常类似的功能,这对图像工作良好

public void getLocalVideoFiles(Context context) {
    ContentResolver videoResolver = context.getContentResolver();
    Uri videoUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
    String test = getRealPathFromURI(context, videoUri);
    Cursor videoCursor = videoResolver.query(videoUri, null, null, null, null);

    if(videoCursor!=null && videoCursor.moveToFirst()){
        //get columns
        int latColumn = videoCursor.getColumnIndex
                (MediaStore.Video.Media.LATITUDE);
        int lonColumn = videoCursor.getColumnIndex
                (MediaStore.Video.Media.LONGITUDE);

        do {
            String thisLat = Double.toString(videoCursor.getDouble(latColumn));
            String thisLon = Double.toString(videoCursor.getDouble(lonColumn));

            Log.d("video Latitude",thisLat);
            Log.d("video Longitude",thisLon);
        }
        while (videoCursor.moveToNext());
    }
    return localClips;
}
这里描述的方法:产生类似的结果(METADATA\u KEY\u LOCATION列中的空值)

所以,我的问题是:内置的Android视频工具在创建视频时会记录位置数据吗?答案似乎是否定的,但我不明白如果是这种情况,为什么会有位置数据列。如果不是这样,我如何访问视频位置数据?我需要已经拍摄的视频文件的位置


提前谢谢

我刚刚验证了你的假设,即谷歌在录制视频时不保留位置数据,这是不正确的

例如:使用我的Nexus5和5.1版,我能够在刚刚拍摄的视频上获得地理标签。您可以自己尝试,如果您的手机是根用户,只需使用一些
SQLITE查看器浏览
MediaStore
externaldb(com.android.providers.media)

但假设谷歌没有保留地理标签。他们保留这样一个专栏的原因有很多:

  • 支持其他想要保留地理标记的视频库
  • 允许正在使用录像机的用户保存当前位置(使用FusedLocation或类似工具)。一种方法是只更新数据库中的相关行,例如:

    getContentResolver().update(MediaStore.Video.Media.EXTERNAL_CONTENT_URI.buildUpon().appendPath("2152").build(), cv, null, null);
    
  • 支持以前支持标记的版本


一些后续问题:1。您确定对数据库的查询是正确的吗?(你能得到一个实际的光标吗?你能从中得到其他值吗?)。2.你确定你查询的视频确实有任何信息吗?你试过查询一个你知道有元数据的视频吗?是的。我从示例代码中删除了额外的查询,以使问题更清晰。但是,这种方法确实成功地返回了文件名和创建时间戳。lat,lon列只有0,0,是的。我正要回来写这件事。我今天在朋友的三星手机上测试了它(使用相同版本的Android),位置数据就在那里。问题是我最初只在我的HTC上测试,它没有数据,正如我在最初的问题中所描述的那样。所以,它似乎是关于供应商,而不是味道(这也是神秘的。)因为有超过18796个不同的设备使用Android系统运行。我猜你会发现一些(或很多)神秘的东西(-):希望你愿意考虑接受我的问题。