Это весь код PlayerActivity
package com.sherdle.universal;
import android.arch.lifecycle.ViewModel;
import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.JsonReader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.arges.sepan.argmusicplayer.Enums.AudioType;
import com.arges.sepan.argmusicplayer.IndependentClasses.ArgAudio;
import com.arges.sepan.argmusicplayer.PlayerViews.ArgPlayerFullScreenView;
import com.arges.sepan.argmusicplayer.PlayerViews.ArgPlayerLargeView;
import com.arges.sepan.argmusicplayer.PlayerViews.ArgPlayerSmallView;
import com.example.jean.jcplayer.model.JcAudio;
import com.example.jean.jcplayer.view.JcPlayerView;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
public class Argplayer2Activity extends AppCompatActivity implements argplayer3.OnFragmentInteractionListener {
protected JcPlayerView jcplayerView;
public HashMap<String, String> podcasts;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.argplayer2);
podcasts = new HashMap<>();
AsyncTask.execute(new Runnable() {
@Override
public void run() {
try {
String user = getString(R.string.podcast_user);
String server = getString(R.string.podcast_server);
URL proxy = new URL("https://xxxxxxxxxxx.com/android/proxy.php?user="+user+"&server="+server);
HttpsURLConnection connection = (HttpsURLConnection) proxy.openConnection();
if(connection.getResponseCode() == 200) {
InputStream body = connection.getInputStream();
InputStreamReader bodyReader = new InputStreamReader(body, "UTF-8");
JsonReader jsonReader = new JsonReader(bodyReader);
jsonReader.beginObject();
while(jsonReader.hasNext()) {
String key = jsonReader.nextName();
String value = jsonReader.nextString();
podcasts.put(key, value);
}
jsonReader.close();
connection.disconnect();
runOnUiThread(new Runnable() {
@Override
public void run() {
jcplayerView = (JcPlayerView) findViewById(R.id.jcplayer);
ListView podcastlistView = (ListView) findViewById(R.id.podcastListView);
PodcastAdapter podcastAdapter = new PodcastAdapter();
podcastlistView.setAdapter(podcastAdapter);
}
});
}
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
});
}
public class MyViewModel extends ViewModel {
String okey;
public String doszka() {
loadPodcasts();
return okey;
}
void loadPodcasts() {
okey = "oki";
}
void setOkey(String x) {
okey = x;
}
}
@Override
public void onFragmentInteraction(Uri uri) {
}
public class PodcastAdapter extends BaseAdapter {
@Override
public int getCount() {
return podcasts.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
view = getLayoutInflater().inflate(R.layout.podcast_layout, null);
TextView title = (TextView) view.findViewById(R.id.podcastTitle);
ImageView playButton = (ImageView) view.findViewById(R.id.playButtonplay);
playButton.setOnClickListener(new PlayOnClickEventListener(i));
title.setText((String) podcasts.keySet().toArray()[i]);
return view;
}
public class PlayOnClickEventListener implements View.OnClickListener {
int position;
public PlayOnClickEventListener(int position) {
this.position = position;
}
@Override
public void onClick(View view) {
jcplayerView.kill();
ArrayList<JcAudio> jcAudios = new ArrayList<>();
jcAudios.add(JcAudio.createFromURL(
(String) podcasts.keySet().toArray()[position],
(String) podcasts.values().toArray()[position]
));
jcplayerView.initPlaylist(jcAudios, null);
jcplayerView.continueAudio();
}
}
}
}
А вопросы ...
Как правильно сохранить состояние игрока?
Я имею в виду... это примерно jcplayerView
.
из
jcplayerView = (JcPlayerView) findViewById(R.id.jcplayer);
ListView podcastlistView = (ListView) findViewById(R.id.podcastListView);
PodcastAdapter podcastAdapter = new PodcastAdapter();
podcastlistView.setAdapter(podcastAdapter);
Это берет это из jcplayerView = (JcPlayerView) findViewById(R.id.jcplayer);
Потому что пока проблема в том, что представьте себе следующее:
Вы идете в приложение, идете в этом задании, есть плеер.
Вы выбираете песню 1, плеер запускается, кнопка воспроизведения становится кнопкой паузы.Вы можете прочитать название песни и т.д. ...
Но вы избегаете приложения.Просто выйдите или перейдите в другое приложение.
Песня играет все время.
Но когда вы вернетесь, это как в первый раз.
Нет названия песни, нет кнопки паузы, только кнопка воспроизведения.
И когда вы запускаете песню, нажимая кнопку воспроизведения на одной из песен, она воспроизводит в 2 раза ту же песню ...
Я думаю, что речь идет о правильном сохранении jcplayerView
вида / объекта ...
Но на самом деле, ребята, я не знаю, что мне делать,
потому что в основном:
Я не знаю, что использовать
Я не знаю, jcplayerView
изменяется в activity's
onCreate
и PlayOnClickEventListener
, которые я создал
И каким-то образом он использует PodcastAdapter
Мне трудно понять и сформировать этона мой взгляд: /.
Плюс есть методы, которые я знаю, многие из них + методы, которые я не знаю.
Я действительно не знаю, что я должен использовать /сделать для этой конкретной проблемы.
Например ViewModel
, или просто onSaveInstanceState
...
Как вы можете видеть, я пытался создать какой-то public class MyViewModel extends ViewModel {
, но я понятия не имею, как его склеить, заставить это работать, каксоздать это.И я не знаю, является ли это правильным способом сделать это.
Я даже не знаю, правильно ли я делаю этот класс в классе деятельности.
Не могу 'Ответ на этот вопрос не найден в документации.
Я описал проблему, думаю, вы должны меня понять + вы получили код.
Пожалуйста, помогите мне с этим :) <3</p>