ユーザーが書籍を読み取り、その書籍の録音された音声を聞くことができるアンドロイドアプリを開発しています。私は、ページを切り替えるためにフリップビューを使用しています。ここでアダプターが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()にしようとしましたが、動作しませんでした。いずれにせよこの問題を解決するために私を導くことができますか?あなたはアダプタでこれを行うべきではない私の意見ではまず感謝
Hi Tejas ... !!ありがとう、私はこれを試してみます。 –
同じ問題が再び作成されますか? –
こんにちはTejas .. !!はい、問題は解決しません。私はあなたの解決策を試みたが、私のために働かなかった。私はなぜそれが起こっているのか分からない。私はすべてのメソッドonPause()でmp.stop()を呼び出そうとしました。 onStop()、OnResume()、onDestroy()ですが、今まで何も忘れていませんでした。 –