package com.moral.yunfushao.activity; import android.content.Intent; import android.content.res.AssetManager; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import com.lzy.okgo.cache.CacheMode; import com.moral.andbrickslib.baseadapter.headandfooter.DividerItemDecoration; import com.moral.andbrickslib.baseadapter.recyclerview.MultiItemTypeAdapter; import com.moral.yunfushao.MainApp; import com.moral.yunfushao.R; import com.moral.yunfushao.adapter.SongAdapter; import com.moral.yunfushao.adapter.VoiceAdapter; import com.moral.yunfushao.base.BaseListActivity; import com.moral.yunfushao.common.API; import com.moral.yunfushao.httputils.HttpCallBack; import com.moral.yunfushao.httputils.HttpUtils; import com.moral.yunfushao.model.Song; import com.moral.yunfushao.model.VoiceBean; import com.moral.yunfushao.utils.AudioUtils; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; /** * Created by haijiang on 2017/7/12. */ public class ChooseSongActivity extends BaseListActivity implements SongAdapter.OnBtnClickListener{ private SongAdapter adapter; private ArrayList voiceList = new ArrayList<>(); AssetManager am; MediaPlayer mp; Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what == 1){ setNormalView(); mPtrFrame.refreshComplete(); adapter.notifyDataSetChanged(); } } }; private int index; @Override protected void initOtherView() { index = getIntent().getIntExtra("position",0); tv_title.setText("本地铃声"); DividerItemDecoration line = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST); mRecyclerView.addItemDecoration(line); adapter = new SongAdapter(mRecyclerView, R.layout.list_item_voice, voiceList); adapter.setOnBtnClickListener(this); mRecyclerView.setAdapter(adapter); adapter.setOnItemClickListener(new MultiItemTypeAdapter.OnItemClickListener() { @Override public void onItemClick(View view, RecyclerView.ViewHolder holder, int position) { } @Override public boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position) { return false; } }); } @Override protected void onLoadMore() { } @Override protected void onRefresh() { getData(); } @Override protected void onDestroy() { super.onDestroy(); if(mp!=null&&mp.isPlaying()){ mp.stop(); mp.release(); } } @Override protected void getBundleExtras(Bundle extras) { } @Override protected void initListener() { } Thread mThread; @Override protected void initData() { getData(); } private void getData(){ setLoadingView(); mThread = new Thread(new Runnable() { @Override public void run() { ArrayList temp = AudioUtils.getAllSongs(ChooseSongActivity.this); if(temp!=null){ voiceList.clear(); voiceList.addAll(temp); mHandler.sendEmptyMessage(1); } } }); mThread.start(); } @Override protected void processClick(View view) { switch (view.getId()){ case R.id.tv_left: finish(); break; } } @Override protected void onErrorPageClick() { } @Override public void playClick(int position) { Song voiceBean = voiceList.get(position); if(voiceBean.isPlay()){ mp.stop(); voiceBean.setPlay(false); }else{ if(mp!=null&&mp.isPlaying()){ mp.stop(); mp.release(); for (Song voice :voiceList){ voice.setPlay(false); } adapter.notifyDataSetChanged(); } mp = new MediaPlayer(); try { mp.setDataSource(voiceBean.getFileUrl()); mp.prepare(); mp.start(); voiceBean.setPlay(true); } catch (IOException e) { e.printStackTrace(); } } adapter.notifyDataSetChanged(); } @Override public void setClick(int position) { Intent intent = new Intent(); intent.putExtra("position",index); intent.putExtra("url",voiceList.get(position).getFileUrl()); intent.putExtra("name",voiceList.get(position).getTitle()); setResult(RESULT_OK,intent); finish(); } }