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.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; import com.lzy.okgo.cache.CacheMode; import com.moral.andbrickslib.baseadapter.headandfooter.DividerItemDecoration; import com.moral.andbrickslib.baseadapter.recyclerview.MultiItemTypeAdapter; import com.moral.andbrickslib.utils.FastJsonTools; import com.moral.andbrickslib.utils.dialog.MaterialDialogUtils; import com.moral.yunfushao.MainApp; import com.moral.yunfushao.R; import com.moral.yunfushao.adapter.VoiceAdapter; import com.moral.yunfushao.base.BaseListActivity; import com.moral.yunfushao.common.API; import com.moral.yunfushao.common.AppConfig; import com.moral.yunfushao.httputils.HttpCallBack; import com.moral.yunfushao.httputils.HttpUtils; import com.moral.yunfushao.model.EventMessage; import com.moral.yunfushao.model.VoiceBean; import org.greenrobot.eventbus.EventBus; 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 VoiceSetActivity extends BaseListActivity implements VoiceAdapter.OnBtnClickListener { private VoiceAdapter adapter; private ArrayList voiceList = new ArrayList<>(); AssetManager am; MediaPlayer mp; private MaterialDialog resetDialog; private int oldType = 0; private void showReset() { resetDialog = MaterialDialogUtils.showCallBaclDialog(this, "温馨提示", "是否重置为默认铃声?", new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { reset(); resetDialog.dismiss(); } }, new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { resetDialog.dismiss(); } }); resetDialog.show(); } @Override protected void initOtherView() { tv_title.setText("设置铃声"); tv_right.setText("重置"); DividerItemDecoration line = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST); mRecyclerView.addItemDecoration(line); adapter = new VoiceAdapter(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 onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 111) { if (resultCode == RESULT_OK && data != null) { int index = data.getIntExtra("position", 0); String url = data.getStringExtra("url"); String name = data.getStringExtra("name"); voiceList.get(index).setDefaultMusic(false); voiceList.get(index).setSetMusic(url); voiceList.get(index).setVoiceName(name); MainApp.theApp.sharedPreferencesUtil.saveVideoList(FastJsonTools.toJson(voiceList)); adapter.notifyDataSetChanged(); mToatUtils.showSingleLongToast("铃声设置成功"); oldType = MainApp.theApp.sharedPreferencesUtil.getVoiceType(); MainApp.theApp.sharedPreferencesUtil.saveVoiceType(3); EventMessage eventMessage = new EventMessage(); eventMessage.setType(AppConfig.SET_VOICE); EventBus.getDefault().post(eventMessage); } } } @Override protected void onLoadMore() { } @Override protected void onRefresh() { } @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() { } @Override protected void initData() { setNormalView(); ArrayList temp = (ArrayList) FastJsonTools.getArrayJson(MainApp.theApp.sharedPreferencesUtil.getVideoList(), VoiceBean.class); if (temp != null) { voiceList.addAll(temp); adapter.notifyDataSetChanged(); } else { reset(); } } @Override protected void processClick(View view) { switch (view.getId()) { case R.id.tv_left: finish(); break; case R.id.tv_right: showReset(); break; } } @Override protected void onErrorPageClick() { } @Override public void playClick(int position) { VoiceBean voiceBean = voiceList.get(position); if (voiceBean.isPlay()) { mp.stop(); voiceBean.setPlay(false); } else { if (mp != null && mp.isPlaying()) { mp.stop(); mp.release(); for (VoiceBean voice : voiceList) { voice.setPlay(false); } adapter.notifyDataSetChanged(); } if (voiceBean.isDefaultMusic()) { if (voiceBean.getRes() != null) { mp = MediaPlayer.create(this, Uri.parse(voiceBean.getRes())); mp.start(); } } else { mp = new MediaPlayer(); try { mp.setDataSource(voiceBean.getSetMusic()); mp.prepare(); mp.start(); voiceBean.setPlay(true); } catch (IOException e) { e.printStackTrace(); } } voiceBean.setPlay(true); } adapter.notifyDataSetChanged(); } @Override public void setClick(int position) { Intent intent = new Intent(VoiceSetActivity.this, ChooseSongActivity.class); intent.putExtra("position", position); startActivityForResult(intent, 111); } /** * 字段名称,目前仅支持修改['refresh_frequency', 'video', 'is_open_upload'] * * @param field * @param value */ private void update(String field, final String value) { Map params = new HashMap<>(); params.put("user_id", MainApp.userId); params.put("field", field); params.put("value", value); String url = API.UPDATEUSERINFO; HttpUtils.doPost(url, params, CacheMode.DEFAULT, true, new HttpCallBack() { @Override public void onSuccess(String res, String msg) { mToatUtils.showSingletonToast(msg); MainApp.theApp.sharedPreferencesUtil.setVideo(Integer.parseInt(value)); if (progressDialog.isShowing()) { progressDialog.dismiss(); } } @Override public void showLoadingDialog() { progressDialog.setTitleText("提交中..."); progressDialog.show(); } @Override public void onFail(int errno, String s) { mToatUtils.showSingletonToast(s); if (progressDialog.isShowing()) { progressDialog.dismiss(); } } }); } private void reset() { voiceList.clear(); VoiceBean voiceBean = new VoiceBean(); voiceBean.setId(0); voiceBean.setRes(AppConfig.voideUrl1); voiceBean.setName("建议回避铃声"); voiceBean.setVoiceName("默认"); voiceList.add(voiceBean); voiceBean = new VoiceBean(); voiceBean.setId(1); voiceBean.setRes(AppConfig.voideUrl2); voiceBean.setName("及时闪躲铃声"); voiceBean.setVoiceName("默认"); voiceList.add(voiceBean); voiceBean = new VoiceBean(); voiceBean.setId(2); voiceBean.setRes(AppConfig.voideUrl3); voiceBean.setName("紧急撤离铃声"); voiceBean.setVoiceName("默认"); voiceList.add(voiceBean); MainApp.theApp.sharedPreferencesUtil.saveVideoList(FastJsonTools.toJson(voiceList)); MainApp.theApp.sharedPreferencesUtil.saveVoiceType(oldType); adapter.notifyDataSetChanged(); EventMessage eventMessage = new EventMessage(); eventMessage.setType(AppConfig.SET_VOICE); EventBus.getDefault().post(eventMessage); } @Override protected void onPause() { super.onPause(); if (mp != null && mp.isPlaying()) { mp.stop(); mp.release(); for (VoiceBean voice : voiceList) { voice.setPlay(false); } adapter.notifyDataSetChanged(); mp = null; } } }