package com.moral.yunfushao.activity; import android.content.Intent; import android.content.res.AssetManager; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.widget.RecyclerView; import android.view.View; import com.moral.andbrickslib.baseadapter.headandfooter.DividerItemDecoration; import com.moral.andbrickslib.baseadapter.recyclerview.MultiItemTypeAdapter; import com.moral.yunfushao.R; import com.moral.yunfushao.adapter.SongAdapter; import com.moral.yunfushao.base.BaseListActivity; import com.moral.yunfushao.model.Song; import com.moral.yunfushao.utils.AudioUtils; import com.moral.yunfushao.utils.PermissionUtil; import java.io.IOException; import java.util.ArrayList; /** * 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() { PermissionUtil.verifyStoragePermissions(this); 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(); } }