第一个类AlbumActivity

package com.alex.media;import com.alex.media.ArtistActivity.ListItemClickListener;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.os.Bundle;import android.provider.MediaStore;import android.view.View;import android.widget.AdapterView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.AdapterView.OnItemClickListener;import android.widget.LinearLayout.LayoutParams;public class AlbumActivity extends Activity {private int[] _ids;private String[]_titles;private ListView listview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = this.getIntent();String albumName;albumName = intent.getExtras().getString("albums");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}, MediaStore.Audio.Media.ALBUM + "='" + albumName+"'", null,null);   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();  }   listview.setAdapter(new MusicListAdapter(this, c));   listview.setOnItemClickListener(new ListItemClickListener());   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(AlbumActivity.this,MusicActivity.class);    intent.putExtra("_ids", _ids);    intent.putExtra("_titles", _titles);    intent.putExtra("position", position);    startActivity(intent);    finish();    }        }}



第二个类AlbumListAdapter
package com.alex.media;import java.util.HashMap;import android.app.Activity;import android.content.Context;import android.database.Cursor;import android.provider.MediaStore;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class AlbumListAdapter extends BaseAdapter{private Context myCon;private String[] albums;private HashMap<String, String> myMap;public AlbumListAdapter(Context con,String[] str1, HashMap<String, String> map){myCon = con;albums = str1;myMap = map;}@Overridepublic int getCount() {return albums.length;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView = LayoutInflater.from(myCon).inflate(R.layout.albumslist,null);/** * 设置专辑名 */TextView album = (TextView)convertView.findViewById(R.id.album);if (albums[position].length()>24){try {String albumName = bSubstring(albums[position],24);album.setText(albumName);} catch (Exception e) {e.printStackTrace();}} else {album.setText(albums[position]);}/** * 设置艺术家姓名 */TextView artist = (TextView)convertView.findViewById(R.id.mysinger);if (myMap.get(albums[position]).equals("<unknown>")){artist.setText("未知艺术家");} else{artist.setText(myMap.get(albums[position]));}ImageView Albumsitem = (ImageView)convertView.findViewById(R.id.Albumsitem);Albumsitem.setImageResource(R.drawable.album);return convertView;}/** * 字符串裁剪 * @param s * @param length * @return * @throws Exception */public static String bSubstring(String s, int length) throws Exception  {       byte[] bytes = s.getBytes("Unicode");      int n = 0; // 表示当前的字节数      int i = 2; // 要截取的字节数,从第3个字节开始      for (; i < bytes.length && n < length; i++)      {          // 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节          if (i % 2 == 1)          {              n++; // 在UCS2第二个字节时n加1          }          else         {              // 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节              if (bytes[i] != 0)              {                  n++;              }          }      }      // 如果i为奇数时,处理成偶数      if (i % 2 == 1)       {          // 该UCS2字符是汉字时,去掉这个截一半的汉字          if (bytes[i - 1] != 0)              i = i - 1;          // 该UCS2字符是字母或数字,则保留该字符          else             i = i + 1;      }       return new String(bytes, 0, i, "Unicode");  }  }


第三个类ArtistActivity
package com.alex.media;import com.alex.media.RecentlyActivity.ListItemClickListener;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.database.Cursor;import android.media.AudioManager;import android.os.Bundle;import android.provider.MediaStore;import android.view.View;import android.widget.AdapterView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.AdapterView.OnItemClickListener;import android.widget.LinearLayout.LayoutParams;public class ArtistActivity extends Activity {private int[] _ids;private String[]_titles;private ListView listview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = this.getIntent();String artistName;if (intent.getExtras().getString("artist").equals("未知艺术家")){artistName = "<unknown>";} else{artistName = intent.getExtras().getString("artist");}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}, MediaStore.Audio.Media.ARTIST + "='" + artistName+"'", null,null);   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();  }   listview.setAdapter(new MusicListAdapter(this, c));   listview.setOnItemClickListener(new ListItemClickListener());   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(ArtistActivity.this,MusicActivity.class);    intent.putExtra("_ids", _ids);    intent.putExtra("_titles", _titles);    intent.putExtra("position", position);    startActivity(intent);    finish();    }        }}


第四个类 ArtistListAdapter
package com.alex.media;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class ArtistListAdapter extends BaseAdapter{private Context myCon;private String[] artists;public ArtistListAdapter(Context con,String[] str1){myCon = con;artists = str1;}@Overridepublic int getCount() {return artists.length;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView = LayoutInflater.from(myCon).inflate(R.layout.artistslist,null);//设置艺术家姓名TextView artist = (TextView)convertView.findViewById(R.id.artist);artist.setText(artists[position]);//设置列表项图标ImageView Artistsitem = (ImageView)convertView.findViewById(R.id.Artistsitem);Artistsitem.setImageResource(R.drawable.artist);return convertView;}}



第五个类ClicksActivity

package com.alex.media;import com.alex.media.ListActivity.ListItemClickListener;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.media.AudioManager;import android.os.Bundle;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.AdapterView.OnItemClickListener;import android.widget.LinearLayout.LayoutParams;public class ClicksActivity extends Activity {private DBHelper dbHelper = null;private ListView listview;private int[] _ids;private String[]_titles;Cursor cursor = null;int[] music_id;//关于音量的变量private AudioManager mAudioManager = null;private int maxVolume;//最大音量private int currentVolume;//当前音量@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);dbHelper = new DBHelper(this, "music.db", null, 2);cursor = dbHelper.queryByClicks();cursor.moveToFirst();int num;if (cursor!=null){num = cursor.getCount();} else{return;}String idString ="";if (num>=10){for(int i=0;i<10;i++){music_id = new int[10];music_id[i]=cursor.getInt(cursor.getColumnIndex("music_id"));if (i<9){idString = idString+music_id[i]+",";} else{idString = idString+music_id[i];}cursor.moveToNext();} }else if(num>0){for(int i=0;i<num;i++){music_id = new int[num];music_id[i]=cursor.getInt(cursor.getColumnIndex("music_id"));if (i<num-1){idString = idString+music_id[i]+",";} else{idString = idString+music_id[i];}cursor.moveToNext();}}System.out.println(idString);if (cursor!=null){cursor.close();cursor=null;}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} , MediaStore.Audio.Media._ID + " in ("+ idString + ")", null, null);  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();        }        listview.setAdapter(new MusicListAdapter(this, c));        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(ClicksActivity.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) {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); } }}



第六个类DBHelper


package com.alex.media;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteDatabase.CursorFactory;public class DBHelper extends SQLiteOpenHelper {private Cursor c = null;private static final String CREATE_TAB = "create table "+ "music(_id integer primary key autoincrement,music_id integer,clicks integer," +"latest text)";private static final String TAB_NAME = "music";private SQLiteDatabase db = null;public DBHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);}@Overridepublic void onCreate(SQLiteDatabase db) {this.db = db;db.execSQL(CREATE_TAB);}public void insert(ContentValues values){SQLiteDatabase db = getWritableDatabase();db.insert(TAB_NAME, null, values);}public void update(ContentValues values,int id){SQLiteDatabase db = getWritableDatabase();db.update(TAB_NAME, values, "music_id="+id, null);}public void delete(int id){if (db == null){db = getWritableDatabase();}db.delete(TAB_NAME, "music_id=?", new String[]{String.valueOf(id)});}public Cursor query(int id){SQLiteDatabase db = getReadableDatabase();c = db.query(TAB_NAME, null, "music_id=?", new String[]{String.valueOf(id)}, null, null, null);return c;}public Cursor queryByClicks(){//按点击量查询SQLiteDatabase db = getReadableDatabase();c = db.query(TAB_NAME, null, null, null, null, null, "clicks desc");return c;}public Cursor queryRecently(){//按时间降序查询SQLiteDatabase db = getReadableDatabase();c = db.query(TAB_NAME, null, null, null, null, null, "latest desc");return c;}public void close(){if (db != null){db.close();db=null;}if (c!=null){c.close();c=null;}}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {}}

更多相关文章

  1. Android录音时,根据PCM数据获取音量值(单位分贝)
  2. Android统计EditText的字母数字以及汉字的统计方法
  3. android中流的理解。(字节流读写与字符流的读写)
  4. Android7.0 设置音量最小时有声音输出
  5. AudioManager音量控制
  6. android中限制EditText最大输入字节数
  7. android audioManager获取音量

随机推荐

  1. Android程序——人机猜拳
  2. Android(安卓)切屏
  3. EditText禁止复制粘贴
  4. ActivityManagerService中根据UID获取App
  5. Android(安卓)PopupWindows使用
  6. android 图片渐变处理
  7. Android开发笔记: Activity
  8. Android一种欢迎界面全屏显示方法
  9. Android(安卓)UI thread / main thread
  10. Android(安卓)滑动验证的一种简单实现