Intereting Posts
Android – кнопка «Назад» и фрагмент backstack не работают Amazon S3 TransferListener никогда не называется Управление памятью Android: плотность экрана, требуемые размеры изображений и доступная куча Как предоставить местоположение с AdRequest теперь, когда AdMob стала частью Службы Google Play? Узнайте, показывает ли Android WebView кешированную страницу RecyclerView: Внутренние классы не могут иметь статическую декларацию Приложения iPhone или Android, использующие аутентификацию на основе SMS? CheckSelfPermission возвращает PERMISSION_GRANTED для отозванного разрешения с targetSdkVersion <= 22 Значение по умолчанию в ListPreference из array.xml Apache HttpClient на Android, производящем CertPathValidatorException (имя эмитента! = Имя_почты) Как отлаживать стили пользовательского интерфейса Android Задать функциональность кнопки возврата виджета поиска Диалог загрузки во время вращения устройства Как показывать баннерную рекламу с перерывами в gridview В каком файле настроек используется PreferenceFragment для чтения / записи?

Как я могу получить данные о местоположении видео в Android?

Я пытаюсь получить метаданные для видеофайлов, хранящихся на телефоне моего приложения. Я могу получить имя файла, идентификатор, дату и т. Д. Однако данные широты и долготы всегда возвращаются как 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; } 

Описанный здесь подход: Geotagging захваченного видео дает аналогичные результаты (нулевое значение в столбце METADATA_KEY_LOCATION).

Итак, мой вопрос: делает ли встроенный инструмент видеообработки Android записывать данные о местоположении при создании видео? Кажется, что ответ отрицательный, но я не понимаю, почему есть столбцы для данных о местоположении, если это так. Если это не так, как я могу получить доступ к данным о местоположении видео? Мне нужно расположение видеофайлов, которые уже были сделаны.

Заранее спасибо!

Ну, я только что протестировал ваше предположение, что Google не сохраняет данные о местоположении во время записи видео, и это неверно.

Например: используя мою nexus 5 с версией 5.1, я смог получить геотаг на видео, которое я только что взял. Вы можете попробовать это самостоятельно, и если ваш телефон укоренен, просто просмотрите внешнюю БД SQLITE viewer (com.android.providers.media), используя некоторый SQLITE viewer

Но скажем, что google не поддерживает GeoTag . Существует ряд причин, по которым они будут содержать такую ​​колонку:

  • Для поддержки других видео-библиотек, которые хотят сохранить гео-тегирование
  • Чтобы пользователи, которые используют Video Recorder, способ сохранить текущее местоположение (используя FusedLocation или что-то подобное). Способ сделать это – просто обновить соответствующую строку в БД, например:

     getContentResolver().update(MediaStore.Video.Media.EXTERNAL_CONTENT_URI.buildUpon().appendPath("2152").build(), cv, null, null); 
  • Для поддержки предыдущих версий, которые поддерживают тегирование