Вот такой код у меня получился для воспроизведения радио через Exoplayer:
public class MainActivity extends AppCompatActivity {
private SimpleExoPlayer player;
private TextView textView;
public String sArtist, sTrack;
DefaultDataSourceFactory dataSourceFactory;
MediaSource mediaSource;
static String RADIO_URL = "http://s1.radioheart.ru:8001/radiogomelfm";
boolean isEnabled;
private Button StartStop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//initialize player
try {
player = ExoPlayerFactory.newSimpleInstance(this);
dataSourceFactory = new DefaultDataSourceFactory(this,Util.getUserAgent(this, "Gomel FM"));
mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(RADIO_URL));
player.prepare(mediaSource);
} catch (Exception e) {
e.printStackTrace();
}
isEnabled = true;
}
//response from radiogomelfm.by
private void getResponse(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(com.example.radiogomelfm.ApiInterface.JSONURL)
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiInterface api = retrofit.create(ApiInterface.class);
Call<List<MusicModel>> call = api.getMusic();
call.enqueue(new Callback<List<MusicModel>>() {
@Override
public void onResponse(Call<List<MusicModel>> call, Response<List<MusicModel>> response) {
if (response.isSuccessful()) {
List<MusicModel> musicModelArrayList = response.body();
if (musicModelArrayList !=null) {
showMusicList(musicModelArrayList);
} else {
Log.w("onResponse", "Returned empty response");
}
} else {
Log.w("onResponse", "Not success response: " + response.message());
}
}
@Override
public void onFailure(Call<List<MusicModel>> call, Throwable t) {
Log.e("Retrofit", "onFailure: ", t);
}
});
}
// parsing ArtistName & TrackName from radiogomelfm.by
private void showMusicList(List<MusicModel> musicModelArrayList) {
StringBuilder sb = new StringBuilder();
sb.append(musicModelArrayList.get(0).getArtistName());
sb.append(" - ");
sb.append(musicModelArrayList.get(0).getTrackName());
textView.setText(sb);
sArtist = musicModelArrayList.get(0).getArtistName();
sTrack = musicModelArrayList.get(0).getTrackName();
}
//logic button system start-stop mediaplaying
public void OnPlay(View view) {
if (isEnabled) {
player.setPlayWhenReady(true);
isEnabled = false;
Button StartStop = (Button) findViewById(R.id.btnPlay);
StartStop.setText("STOP");
textView = findViewById(R.id.textView); //ArtistName & TrackName
getResponse();
}
else
{
player.setPlayWhenReady(false);
isEnabled = true;
Button StartStop = (Button) findViewById(R.id.btnPlay);
StartStop.setText("PLAY");
}
}
}
Вопрос: как вынести в отдельный класс все движения с кнопкой, парсингом и аудио и оставить в MainActivity только стандартные строчки:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть шрифтСкачан из интернета, открывается на локальном компьютере, все отлично пытаюсь его примерить к обычной странице на обычном хостинге
Подскажите, как редактировать номера телефонов в хедере и футере на этом сайтеЯ так понимаю, что модуль не установлен, а только вручную
Надо вывести символ рубля в письмеКак это правильно сделать? Насколько я понял сторонние шрифты в письма подключать нельзя
уже перебрал некоторые парсерыв основном они просто возвращают пустой результат