package com.hdl.sdk.hdl_sdk.activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import com.hdl.sdk.hdl_core.HDLAppliances.HDLAudio.HDLAudio; import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo; import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLCommand; import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.AudioInfoEvent; import com.hdl.sdk.hdl_core.Util.LogUtil.HDLLog; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; public class AudioActivity extends AppCompatActivity { private Button getCurSongInfoBtn, playPauseBtn, playStopBtn, preSongBtn, nextSongBtn, volMinBtn, volMidBtn, volMaxBtn, modeBtn, nextListBtn, preListBtn; private AppliancesInfo appliancesInfo; private List listString = new ArrayList<>(); private ArrayAdapter adapter; private ListView listView; private TextView curSongInfoTv, curSongNameTv; private int curListNum;//由于不同厂商需求,必须自行记录当前的列表号 private boolean isInit;//记录是否初始化 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(com.hdl.sdk.hdl_sdk.R.layout.activity_audio); curSongNameTv = (TextView) findViewById(com.hdl.sdk.hdl_sdk.R.id.curSongName); curSongInfoTv = (TextView) findViewById(com.hdl.sdk.hdl_sdk.R.id.curSongInfo); getCurSongInfoBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.current); playPauseBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.playpause); playStopBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.playstop); preSongBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.pre); nextSongBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.next); volMinBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.volmin); volMidBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.volmid); volMaxBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.volmax); modeBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.audiomode); nextListBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.nextlist); preListBtn = (Button) findViewById(com.hdl.sdk.hdl_sdk.R.id.prelist); listView = (ListView) findViewById(com.hdl.sdk.hdl_sdk.R.id.audiolist); isInit = true; listString.add("这个列表显示歌曲"); appliancesInfo = (AppliancesInfo) getIntent().getSerializableExtra("hdl"); if (!EventBus.getDefault().isRegistered(this)) { EventBus.getDefault().register(this); } adapter = new ArrayAdapter(AudioActivity.this, android.R.layout.simple_list_item_1, listString); listView.setAdapter(adapter); HDLCommand.audioCtrl(appliancesInfo, HDLAudio.GET_AUDIO_CURRRENT_INFO);//获取当前音乐信息。返回当前歌曲、所有信息。 HDLCommand.audioCtrl(appliancesInfo, HDLAudio.GET_AUDIO_MODE);//获取当前音乐播放模式。仅返回单曲播放等播放模式。 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int position, long id) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_CHOOSE_PLAY_SONG, curListNum, position); } }); getCurSongInfoBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.GET_AUDIO_CURRRENT_INFO); } }); playPauseBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_AUDIO_PLAYPAUSE); } }); playStopBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_AUDIO_PLAYSTOP); } }); preSongBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_PRE_SONG); } }); nextSongBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_NEXT_SONG); } }); modeBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_AUDIO_MODE_UP);//播放模式+ // HDLCommand.HDLaudioCtrl(AudioActivity.this,appliancesInfo,HDLAudio.SET_AUDIO_MODE_DOWN);//播放模式- } }); volMinBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_AUDIO_VOL, 0);//音量最小:0。小于0,SDK不处理 } }); volMidBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_AUDIO_VOL, 40); } }); volMaxBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_AUDIO_VOL, 79);//音量最大:79。超过79,SDK不处理 } }); nextListBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_NEXT_LIST);//获取下一列表,当前音乐会停止播放 } }); preListBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { HDLCommand.audioCtrl(appliancesInfo, HDLAudio.SET_PRE_LIST);//获取上一列表,当前音乐会停止播放 } }); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } @Subscribe(threadMode = ThreadMode.MAIN) public void onAudioEventMain(AudioInfoEvent event) { //判断是否为本音乐模块的子网号,设备号 if (event.getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID() && event.getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID() ) { switch (event.getType()) { case HDLAudio.CALLBACK_SONG_NAME_LIST: listString.clear(); for (int i = 0; i < event.getSongNameList().size(); i++) { listString.add(event.getSongNameList().get(i)); } adapter.notifyDataSetChanged(); break; case HDLAudio.CALLBACK_CURRENT_VOLUME: HDLLog.info( "当前音量值:" + event.getAudioInfoInt()); break; case HDLAudio.CALLBACK_AUDIO_LIST_NUM: int[] listNum = event.getAudioListInfo(); curListNum = listNum[0]; HDLLog.info( "当前列表号:" + listNum[0] + " 当前共有列表数:" + listNum[1]); if (isInit) { isInit = false;//此操作为仅初始化才请求获取当前音乐列表,厂商可以自行决定何时获取音乐列表 HDLCommand.audioCtrl(appliancesInfo, HDLAudio.GET_AUDIO_LIST, curListNum);//获取当前播放列表,此方法如果在歌曲播放状态时调用则会导致歌曲停止播放,硬件设计如此 } break; case HDLAudio.CALLBACK_CURRENT_LIST_NAME: HDLLog.info( "当前列表名:" + event.getAudioInfoStr()); break; case HDLAudio.CALLBACK_CURRENT_SONG_NUM: int[] songNum = event.getAudioListInfo(); HDLLog.info( "当前歌曲号:" + songNum[0] + " 当前共有歌曲数:" + songNum[1]); break; case HDLAudio.CALLBACK_CURRENT_SONG_NAME: HDLLog.info( "当前歌曲名:" + event.getAudioInfoStr()); curSongNameTv.setText("当前歌曲名:" + event.getAudioInfoStr()); break; case HDLAudio.CALLBACK_CURRENT_SONG_INFO: int[] songInfo = event.getAudioListInfo(); //songInfo[0],songInfo[1]获得的值为秒,如songInfo[0]=250,即歌曲总时长为250秒。songInfo[2]获得的值为:1、2、3。1:停止,2:播放,3:暂停。 String curStatus; switch (songInfo[2]) { case 1: curStatus = "停止"; break; case 2: curStatus = "播放"; break; case 3: curStatus = "暂停"; break; default: curStatus = "未知"; break; } HDLLog.info( "当前歌曲总时长:" + songInfo[0] + "秒 ,当前歌曲已播放时长:" + songInfo[1] + "秒, 当前歌曲状态:" + curStatus); curSongInfoTv.setText("当前歌曲总时长:" + songInfo[0] + "秒 ,当前歌曲已播放时长:" + songInfo[1] + "秒, 当前歌曲状态:" + curStatus); break; case HDLAudio.CALLBACK_CURRENT_MODE: String curMode; switch (event.getAudioInfoInt()) { case 1: curMode = "单曲播放"; break; case 2: curMode = "单曲循环"; break; case 3: curMode = "连续播放"; break; case 4: curMode = "连播循环"; break; default: curMode = "未知"; break; } modeBtn.setText(curMode); break; default: break; } } } }