Mike
Андрей
для аналитики просто в Application onCreate
Андрей
YandexMetrica.activate(context, YANDEX_ANALYTICS_KEY)
YandexMetrica.enableActivityAutoTracking(context)
Андрей
и все
Mike
Не «и всё», потому что метрика стартует отдельный процесс.
Mike
Aleksei
в каком смысле "и всё"? если я буду добавлять какую-то логику в onCreate, код отработает дважды, т.к. метрика стартует отдельный процесс, как верно указал Quantum
Андрей
хм, заинтересовали, пойду проверю
Nikita
И как чекать процесс метрики?
Андрей
но у меня так в продакшне, статистика корректная и проблем не видел
Yury
Все верно, нужно проверять процесс, т.к. новый процесс запускает еще раз Application.onCreate, а если у вас там какая то небезопасная для межпроцесса логика, то все сломается. Даже если не сломается, нет смысла инитить VkSDK например в процессе метрики.
Aleksei
что сейчас в принципе и происходит, когда я добавил запуск миграции с одной бд на другую - данные продублировались
Aleksei
каким образом можно проверить процесс, что он не "наш", а метрики?
Yury
Я так вроде бы делал https://gist.github.com/Tinker-S/2ecead050b2154ad6b10 , a processName потом проверил на endWith("metrica")
Mike
^ видимо, стоит взять на вооружение этот костыль.
У них написано «Соответственно, если вы не хотите, чтобы некоторый код исполнялся больше одного раза, не следует помещать его в метод Application.onCreate().» (https://tech.yandex.ru/appmetrica/doc/mobile-sdk-dg/concepts/android-initialize-docpage/). В публичном API действительно нет метода для проверки процесса. Это дичь, стоит написать им об этом, пусть сделают как LeakCanary, например.
Aleksei
Alexey
Подскажите, в тузпике следующий код выдаст одинаковые скоупы или ошибку?
Toothpick.openScope(1,2,3); Toothpick.openScope(2,3);
Nikita
Вроде как на сайте метрики написано что ничего страшного в этом нет
Nikita
Что два раза вызывается
Mike
Nikita
Создание БД в onCreate - плохое решение. Я для такого таска создал SplashScreen и там чекал версию базы
Mike
Nikita
Ну замедливать запуск всегда плохо
Aleksei
да и точек входа в приложение может быть несколько, хотелось бы иметь одно место для инициализации, а не добавлять во все места
Aleksei
что за сервис Application.onCreate() ?
Андрей
перечитал все и понял
Андрей
короче аппметрика просто накладывает ограничение на использование Application.onCreate()
Андрей
и там больше нельзя класть код который не должен отработать больше 1ого раза
Vadim
Есть строка json нужно её десериализовать в List
Это делается с помощью простой обработки json?
Mike
Vadim
в чём вопрос?
как десериализовать строку json в List<SomeClass>
Mike
Anonymous
Vadim Используй Gson + анотации
Андрей
к чему они там?
Anonymous
проще ведь
Vadim
Vadim Используй Gson + анотации
что то типо?
val gson = Gson()
this.userData = gson.fromJson(userData, object : TypeToken<List<String>>() {}.type)
где userData c аннотацей @Keep
Anonymous
https://habrahabr.ru/company/naumen/blog/228279/
Кирилл
Elron
Вопрос про котлин: если в котлине нет примитивов и одни объекты, то если
var l: Long = 5L;
l = 7
получается что создается новый объект ?
Mike
Андрей
Андрей
про это доклад был у Исаковой на KotlinConf
Андрей
https://www.youtube.com/watch?v=Uizh2WlJtnk
Андрей
??? там объясняется во что типы котлина компилятся
Андрей
это как раз и отвечает на вопрос будет создаваться отдельный объект на var l: Long = 5L; например или нет
Anna
интересно, а есть ли такое d.util.Patterns.EMAIL_ADDRESS.matcher(email).matches() для пароля, который должен содержать одну цифру и один символ?
Mike
Anna
Кирилл
Давай о Java будем писать в @jvmchat
Pavel
Всем привет! 
Снова прошу консультации у сообщества)
Задача - написать простенький прототип для стриминга видео с телефона на сервер. 
Поскольку хотелось обойтись без больших временный затрат, мы сначала нашли модуль для nginx, который позволяет стримить видео в HLS формате (https://github.com/arut/nginx-ts-module). Попробовали записывать видео на телефоне сразу в формате mp2t при помощи MediaRecorder, но, насколько я понял, этот формат поддерживается только с API 26. ffmpeg решили пока не затягивать, попробовать обойтись просто Android sdk. 
По поводу RTCP - серверные ребята сказали, что они бы не хотели с ним заморачиваться. 
Поэтому мы решили попробовать записывать коротенькие видео (секунд по 10) и отправлять их на сервер, потом их склеивать и отправлять клиентам. Опять же, метод, который позволяет на лету поменять файл, куда записывает MediaRecorder, появился только в API 26. Пытались использовали два MediaRecorder и менять их поочередно. Но так появилась задержка между кусочками.
Сейчас вот пытаемся уменьшить задержку. Появилась идея брать поток байтов с превью камеры (из callback-а Camera.PreviewCallback), прогонять через MediaCodec, записывать в файл и отправлять на сервер. Пока у меня что-то не получается разобраться, как правильно, собственно, прогнать поток байтов =/ 
Собственно, мои вопросы к знатокам:
- Подскажите, в правильную сторону ли я двигаюсь, или это "какая-то дичь"? 
- Будет ли задача проще, если пробовать стримить видео по RTCP? Я видел библиотеку libstreaming, кто-нибудь пользовался? 
- Может кто-нибудь знает, как вообще правильно решать подобную задачу?.. 
Заранее спасибо за ответы! Буду рад любым советам. 
Anna
Всем привет! 
Снова прошу консультации у сообщества)
Задача - написать простенький прототип для стриминга видео с телефона на сервер. 
Поскольку хотелось обойтись без больших временный затрат, мы сначала нашли модуль для nginx, который позволяет стримить видео в HLS формате (https://github.com/arut/nginx-ts-module). Попробовали записывать видео на телефоне сразу в формате mp2t при помощи MediaRecorder, но, насколько я понял, этот формат поддерживается только с API 26. ffmpeg решили пока не затягивать, попробовать обойтись просто Android sdk. 
По поводу RTCP - серверные ребята сказали, что они бы не хотели с ним заморачиваться. 
Поэтому мы решили попробовать записывать коротенькие видео (секунд по 10) и отправлять их на сервер, потом их склеивать и отправлять клиентам. Опять же, метод, который позволяет на лету поменять файл, куда записывает MediaRecorder, появился только в API 26. Пытались использовали два MediaRecorder и менять их поочередно. Но так появилась задержка между кусочками.
Сейчас вот пытаемся уменьшить задержку. Появилась идея брать поток байтов с превью камеры (из callback-а Camera.PreviewCallback), прогонять через MediaCodec, записывать в файл и отправлять на сервер. Пока у меня что-то не получается разобраться, как правильно, собственно, прогнать поток байтов =/ 
Собственно, мои вопросы к знатокам:
- Подскажите, в правильную сторону ли я двигаюсь, или это "какая-то дичь"? 
- Будет ли задача проще, если пробовать стримить видео по RTCP? Я видел библиотеку libstreaming, кто-нибудь пользовался? 
- Может кто-нибудь знает, как вообще правильно решать подобную задачу?.. 
Заранее спасибо за ответы! Буду рад любым советам. 
когда нам нужно было стримить (но у нас были свои специфические задачи), мы делали набор картинок + аудио, запаковывали кусочками в пакеты и отправляли по UDP с HTTP header. в хедере был номер пакета. сервер получал пакеты и сортировал их и отдавал обратно на клиент. на клиенте распаковывали и склеивали. в итоге получилось норм, но работы там много, чтобы сделать нормально. если бы вернуть время назад, взяли бы wowza и не мучались.. скоро будем делать стрим опять. собираемся делать с kurento, webrtc streaming
Anna
Anna
public static boolean isValidPassword(String password) {
if (password == null) {
return false;
} else if (TextUtils.isEmpty(password)) {
return false;
} else if (password.trim().length() < 8){
return false;
}
return true;
}
Pavel
Igor
Igor
Pavel
ffmpeg например
Хм. Спасибо за наводку.
А по поводу текущего решения что-нибудь можете рассказать?
Кирилл
Mike
Mike
Anna
Pavel
Anna
На новых - это на каких, например?
мы все на стандарте делали. картинки брали с камеры через апи камеры... как сжимали не помню
аудио тоже через стандарт, получался wav и мы его сжимали тоже через какую-то функцию, она в два раза сжимала. можно было брать либу чтобы сжимать в mp3, но тогда на него еще нужна была лицензия. теперь взяли бы mp3
Anna
Pavel
Dårk
Igor
мы шлём non-fatals в Crashlytics и показываем сообщение пользователю
Dårk
Rustam
Добрый день. Может кто нибудь знает https://stackoverflow.com/questions/49794035/android-webview-javascriptinterface-doesnt-have-methods ?
Vitalii
@RustamIbragimov onSendRequest должен быть public
Vitalii
@RustamIbragimov и попробуй передать параметры window.JsInterface.onSendRequest("url", "request", "response")