第七个类ListActivity

package com.alex.media;import android.app.Activity;import android.app.AlertDialog;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.database.Cursor;import android.media.AudioManager;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.KeyEvent;import android.view.View;import android.widget.AdapterView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import android.widget.AdapterView.OnItemClickListener;import android.widget.LinearLayout.LayoutParams;public class ListActivity extends Activity {private static final String MUSIC_LIST = "com.alex.list";private ListView listview;private int[] _ids;private String[]_titles;private int pos;private  MusicListAdapter adapter;private ScanSdReceiver scanSdReceiver = null;private AlertDialog ad = null;private AlertDialog.Builder  builder = null;//关于音量的变量private AudioManager mAudioManager = null;private int maxVolume;//最大音量private int currentVolume;//当前音量    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);      //注册广播接收器        IntentFilter filter = new IntentFilter();        filter.addAction(MUSIC_LIST);        registerReceiver(changeItem, filter);                //测试是否有音乐在播放        Intent intent = new Intent();        intent.setAction("com.alex.media.MUSIC_SERVICE");        intent.putExtra("list", 1);        startService(intent);                listview = new ListView(this);        Cursor c = this.getContentResolver()        .query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,        new String[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.DURATION,MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DISPLAY_NAME },        null, null, null);        if (c==null || c.getCount()==0){        builder = new AlertDialog.Builder(this);builder.setMessage("存储列表为空...").setPositiveButton("确定", null);ad = builder.create();ad.show();        }        c.moveToFirst();        _ids = new int[c.getCount()];        _titles = new String[c.getCount()];        for(int i=0;i<c.getCount();i++){        _ids[i] = c.getInt(3);        _titles[i] = c.getString(0);        c.moveToNext();        }        adapter = new MusicListAdapter(this, c);        listview.setAdapter(adapter);        listview.setOnItemClickListener(new ListItemClickListener());                mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);//获得最大音量  currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);//获得当前音量 LinearLayout list = new LinearLayout(this);list.setBackgroundResource(R.drawable.listbg);        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(        LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);        list.addView(listview,params);        setContentView(list);    }       class ListItemClickListener implements OnItemClickListener{    @Override    public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {    // TODO Auto-generated method stub    Intent intent = new Intent(ListActivity.this,MusicActivity.class);    intent.putExtra("_ids", _ids);    intent.putExtra("_titles", _titles);    intent.putExtra("position", position);    startActivity(intent);    finish();    }        }               public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == event.KEYCODE_BACK) {if (scanSdReceiver!=null)      unregisterReceiver(scanSdReceiver);Intent intent = new Intent();intent.setClass(this, MainActivity.class);startActivity(intent);finish();}return true;    }    public boolean dispatchKeyEvent(KeyEvent event) { int action = event.getAction(); int keyCode = event.getKeyCode(); switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: if (action == KeyEvent.ACTION_UP) {if (currentVolume<maxVolume){currentVolume = currentVolume + 1;mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0);} else {mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0);}} return false; case KeyEvent.KEYCODE_VOLUME_DOWN: if (action == KeyEvent.ACTION_UP) { if (currentVolume>0){currentVolume = currentVolume - 1;mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume , 0);} else {mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0);}} return false; default: return super.dispatchKeyEvent(event); } }    private BroadcastReceiver changeItem = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(MUSIC_LIST)){pos = intent.getExtras().getInt("position");adapter.setItemIcon(pos);//改变列表项图标adapter.notifyDataSetChanged();//通知UI更新}}};@Overrideprotected void onStop() {super.onStop();unregisterReceiver(changeItem);}}


类八LRCbean

package com.alex.media;public class LRCbean {private int beginTime=0;public int getBeginTime() {return beginTime;}public void setBeginTime(int beginTime) {this.beginTime = beginTime;}public int getLineTime() {return lineTime;}public void setLineTime(int lineTime) {this.lineTime = lineTime;}public String getLrcBody() {return lrcBody;}public void setLrcBody(String lrcBody) {this.lrcBody = lrcBody;}private int  lineTime=0;private String lrcBody = null;}



类⑨LRCKlokView


package com.alex.media;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;public class LRCKlokView extends View{private Paint p = null;public LRCKlokView(Context context, AttributeSet attrs) {super(context, attrs);p = new Paint();}@Overridepublic void draw(Canvas canvas) {// TODO Auto-generated method stubsuper.draw(canvas);p.setColor(Color.GREEN);}public void invalidate(String lrc){Canvas canvas = new Canvas();canvas.drawText(lrc, 0, 30, p);}}


类⑩MainActivity


package com.alex.media;import android.app.Activity;import android.app.Application;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.database.Cursor;import android.media.AudioManager;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.AdapterView.OnItemClickListener;public class MainActivity extends Activity{private ListView listview=null;private Intent intent = null;private static final int ITEM1 = Menu.FIRST;private static final int ITEM2 = Menu.FIRST+1;private ScanSdReceiver scanSdReceiver = null;private AudioManager mAudioManager = null;private int maxVolume;//最大音量private int currentVolume;//当前音量@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);String[] strs = {"全部音乐","最近播放列表","最经常播放列表"};ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strs);listview = new ListView(this);listview.setAdapter(adapter);listview.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int position,long id) {switch (position) {case 0:        intent = new Intent();intent.setClass(MainActivity.this, ListActivity.class);startActivity(intent);finish();break;case 1:intent = new Intent();intent.setClass(MainActivity.this, RecentlyActivity.class);startActivity(intent);finish();break;case 2:intent = new Intent();intent.setClass(MainActivity.this, ClicksActivity.class);startActivity(intent);finish();break;}}});    mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);//获得最大音量  currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);//获得当前音量 this.setContentView(listview);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, ITEM1, 0, "刷新库");menu.add(0, ITEM2, 0, "退出");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case ITEM1:scanSdCard();break;case ITEM2:if (scanSdReceiver!=null)      unregisterReceiver(scanSdReceiver);this.finish();Intent intent = new Intent();intent.setAction("com.alex.media.MUSIC_SERVICE");stopService(intent);break;default:break;}return true;} private void scanSdCard(){    IntentFilter intentfilter = new IntentFilter( Intent.ACTION_MEDIA_SCANNER_STARTED);    intentfilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);    intentfilter.addDataScheme("file");    scanSdReceiver = new ScanSdReceiver();    registerReceiver(scanSdReceiver, intentfilter);    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,    Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath())));    }  public boolean dispatchKeyEvent(KeyEvent event) { int action = event.getAction(); int keyCode = event.getKeyCode(); switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: if (action == KeyEvent.ACTION_UP) {if (currentVolume<maxVolume){currentVolume = currentVolume + 1;mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0);} else {mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0);}} return false; case KeyEvent.KEYCODE_VOLUME_DOWN: if (action == KeyEvent.ACTION_UP) { if (currentVolume>0){currentVolume = currentVolume - 1;mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume , 0);} else {mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0);}} return false; default: return super.dispatchKeyEvent(event); } } }


更多相关文章

  1. Android 实现对话框 警告对话框、列表对话框、自定义对话框 ——
  2. MTK平台修改音量默认值需要改动的位置
  3. Android获取系统应用及安装应用的权限列表
  4. Android UI开发第二篇――多级列表(ExpandableListView)
  5. Android 录音获取麦克风实时音量
  6. android4.4调整音量调节速度
  7. Android 录音获取麦克风实时音量--资料
  8. android通过反射获取内置外置存储器列表

随机推荐

  1. 访问Android硬件资源の管理网络和Wifi连
  2. Android第三十三期 - Dialog的应用
  3. Android提高第十九篇之"多方向"抽屉
  4. Android中文API(125) ―― VideoView
  5. Android控件-多选按钮、单选按钮
  6. Android中使用jdbc连接Sqllite
  7. android延迟执行任务(刷新按钮旋转)
  8. Android:Eclipse+ADT+Android SDK 搭建安
  9. “刨根问底”之Android(安卓)消息机制
  10. Android ActionBarSherlock的使用