2) Почему мой MediaSource.duration всегда «Бесконечность», а не правильная продолжительность?
blockquote>Вам нужно вызвать
MediaSource.endOfStream()
в порядок для объекта MediaSource для вычисления фактической продолжительности сегментов вSourceBuffer
. Я вижу, что вы это делаете, но похоже, что вы пытаетесь получить доступ кMediaSource.duration
перед вызовомendOfStream()
. Я предлагаю вам прочитать в конец алгоритма потока в MSE Spec, вы заметите, что это приведет к вызову алгоритма изменения продолжительности .Если вы хотите, чтобы ваш элемент
сообщал о продолжительности до вызова
MediaSource.endOfStream()
, вы можете фактически установить значение с помощьюMediaSource.duration
на основе вашей собственной оценки добавленных сегментов.1) Почему это не делается должным образом при настройке последовательности MediaSource.mode?
blockquote>Насколько мне известно, это следует сделать. Но я предпочел использовать явный подход
timestampOffset
, поскольку он обеспечивает большую гибкость при желании добавлять сегменты далеко впереди в буфере (т. Е. Если пользователь ищет путь впереди текущего конца буфера, вы захотите начать загрузку + добавление после пробела). Хотя я ценю, что ищу, чтобы я не был требованием в вашем прецеденте.
Геокодер SomeTimes перестал работать, когда широта и долгота содержат выше 3 десятичных разрядов, или можно сказать, что Геокодер не может декодировать каждую широту и долготу. необходимо ограничить широту и долготу до 3 десятичных разрядов. завершите код
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(3);
double lat = Double.parseDouble(df.format(currentUserLocation.latitude));
double lon =
Double.parseDouble(df.format(currentUserLocation.longitude));
Geocoder geocoder = new Geocoder(myContext, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(lat,lon, 1);
String cityName = addresses.get(0).getLocality();