사용자가 책을 읽고 해당 책의 녹음 된 오디오를들을 수있는 Android 앱을 개발 중입니다. 플립보기를 사용하여 페이지를 전환합니다.안드로이드 앱에서 어댑터가 닫혀있을 때 오디오 플레이어를 중지하십시오.
은 여기 내 주요 활동입니다 :
private class FullBook extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Personal_Library_Click.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... strings) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("user_id", userId));
params.add(new BasicNameValuePair("book_id", BookIdpref));
json = jParse.makeHttpRequest(url_getBook, "GET", params);
try {
JSONArray jsonary = json.getJSONArray("list");
Log.e("This is the books response", " " + json);
arrayVideos = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < jsonary.length(); i++) {
hashVideos = new HashMap<String, String>();
JSONObject local_obj = (JSONObject) jsonary.get(i);
if (local_obj.toString().contains("image")) {
Image = local_obj.getString("image");
hashVideos.put("image", Image);
}
if (local_obj.toString().contains("image_id")) {
ImId = local_obj.getString("image_id");
hashVideos.put("imageId", ImId);
}
Log.e("Image ID : ", " " + ImId);
arrayVideos.add(hashVideos);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
pDialog.dismiss();
flipView.setAdapter(new FlipAdapter(Personal_Library_Click.this, arrayVideos));
}
}
그리고 그녀는 내 어댑터입니다 :
public class FlipAdapter extends BaseAdapter implements OnClickListener {
public interface Callback {
}
private LayoutInflater inflater;
private Callback callback;
private ArrayList<HashMap<String, String>> data;
public lazyloading.ImageLoader imageLoader;
private Activity activity;
MediaPlayer mp;
public FlipAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data = d;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new lazyloading.ImageLoader(activity.getApplicationContext());
}
public void setCallback(Callback callback) {
this.callback = callback;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.page_flip, parent, false);
HashMap<String, String> hashmaparray = new HashMap<String, String>();
hashmaparray = data.get(position);
holder.BookPages = (ImageView) convertView.findViewById(R.id.book_page);
holder.ShowVideo = (VideoView) convertView.findViewById(R.id.show_video);
holder.ShowVideo.setVisibility(View.INVISIBLE);
if(activity.toString().contains("Personal_Library_Click")){
String image =hashmaparray.get("image");
imageLoader.DisplayImage(image, holder.BookPages);
}
if(activity.toString().contains("AdminBookFlip")){
String im = hashmaparray.get("image");
imageLoader.DisplayImage(im, holder.BookPages);
String v = hashmaparray.get("video");
mp=new MediaPlayer();
try{
mp.setDataSource(v);//Write your location here
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare();
mp.start();
}catch(Exception e) {
e.printStackTrace();
}
}
if(activity.toString().contains("ViewBookVideo")) {
String im = hashmaparray.get("image");
imageLoader.DisplayImage(im, holder.BookPages);
}
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//TODO set a text with the id as well
return convertView;
}
static class ViewHolder{
ImageView BookPages;
VideoView ShowVideo;
}
@Override
public void onClick(View v) {
switch(v.getId()){
}
}
}
내가이 활동을 열 때 완벽하게 실행됩니다. 그러나 활동을 닫으면 오디오는 백그라운드에서 계속 실행됩니다. 이 활동에서 돌아 가면 오디오를 중단해야합니다. 어댑터 null onBackPressed() 만들려고했지만 작동하지 않았다. 어느 누구도이 문제를 해결하도록 안내해 줄 수 있습니까? 당신이 어댑터에서이 작업을 수행해서는 안 내 생각에 처음에는 감사
안녕 Tejas ... !! 고마워, 나는 이것을 시도 할 것이다. –
동일한 문제가 다시 발생합니까? –
안녕하세요 Tejas .. !! 예, 문제가 지속됩니다. 나는 당신의 해결책을 시도했지만 나를 위해 일하지 않았다. 나는 왜 그것이 일어나고 있는지 모른다. 모든 메서드 onPause()에서 mp.stop()을 호출하려고했습니다. onStop(), OnResume(), onDestroy()하지만 지금까지는 아무 것도 입지 않았습니다. –