Есть класс RadioPlayer
, который реализует класс для проигрывания и остановки плеера. Используется ExoPlayer. Как сослаться в этом классе на R.id.player
. У меня в этом классе в строке RadioPlayer.simpleExoPlayerView = (SimpleExoPlayerView) findViewById(R.id.player);
ошибка компиляции. Можно отнаследовать класс от AppCompatActivity, но тогда у меня другая ошибка т.к. метод статический, то пишет что findViewById нельзя использовать в статик методах. А метод мне нужен статический, чтобы вызывать его в сервисе
public class RadioPlayer {
static BandwidthMeter bandwidthMeter;
static TrackSelector trackSelector;
static SimpleExoPlayer player;
static LoopingMediaSource loopingSource;
public static SimpleExoPlayerView simpleExoPlayerView;
public static void startPlayer(String url, Context context) {
if (player != null) {
player.stop();
}
Handler mainHandler = new Handler();
bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
trackSelector = new DefaultTrackSelector( videoTrackSelectionFactory);
LoadControl loadControl = new DefaultLoadControl();
player = ExoPlayerFactory.newSimpleInstance(context, trackSelector, loadControl);
RadioPlayer.simpleExoPlayerView = new SimpleExoPlayerView(context);
RadioPlayer.simpleExoPlayerView = (SimpleExoPlayerView) findViewById(R.id.player);
simpleExoPlayerView.setUseController(true);
simpleExoPlayerView.requestFocus();
simpleExoPlayerView.setPlayer(player);
Uri streamUri = Uri.parse(url);
DefaultBandwidthMeter bandwidthMeterA = new DefaultBandwidthMeter();
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(context, Util.getUserAgent(context, "caucasusradios"), bandwidthMeterA);
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource = new ExtractorMediaSource(streamUri, dataSourceFactory, extractorsFactory, null, null);
loopingSource = new LoopingMediaSource(mediaSource);
player.prepare(loopingSource);
player.setPlayWhenReady(true);
player.addListener(new Player.EventListener() {
@Override
public void onTimelineChanged(Timeline timeline, Object manifest) {
}
@Override
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
}
@Override
public void onLoadingChanged(boolean isLoading) {
}
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
}
@Override
public void onRepeatModeChanged(int repeatMode) {
}
@Override
public void onPlayerError(ExoPlaybackException error) {
player.stop();
player.prepare(loopingSource);
player.setPlayWhenReady(true);
}
@Override
public void onPositionDiscontinuity() {
}
@Override
public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {
}
});
}
public static void stopPlayer() {
player.stop();
}
}
Мне пришлось сделать SimpleExoPlayerView статическим и в классе PlayerActivity в методе onCreate сделать так
RadioPlayer.simpleExoPlayerView = new SimpleExoPlayerView(this);
RadioPlayer.simpleExoPlayerView = (SimpleExoPlayerView) findViewById(R.id.player);
но вроде нельзя делать ресурсы статическими. Поэтому хотелось бы сделать SimpleExoPlayerView и в классе RadioPlayer как-то сослаться на ресурс
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть файл sampletxt во внешней памяти, у которого такая структура [Строка1, Строка2]
У меня есть 2 файла - файл подписи(PKCS7) и файл, который был этой подписью подписанМой вопрос заключается в том, как можно проверить, что подпись...
Добрый вечер! Как сделать фичу : получаю список меток с сервера и надо что бы камера перешла к нимНапример 2 метки - Москва и Питер и камера...
Необходимо немного оптимизировать запросы в приложении Android и разгрузить процессор