第一个类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(安卓)Audio代码分析17 - setvolume函数
  2. Android录音时,根据PCM数据获取音量值(单位分贝)
  3. 【Android】探究android:largeHeap="true"的神秘面纱
  4. android下大文件分割上传
  5. android中流的理解。(字节流读写与字符流的读写)
  6. 错误集合贴
  7. Android的framework层音量控制原理分析--hot(key)处理
  8. 【新提醒】N820 N821 android 4.2 V1.1版 - 大V综合交流区 - 360
  9. Android之使用串口通信及协议解析

随机推荐

  1. Android(安卓)之 Bitmap
  2. netbeans中android开发环境配置 windows
  3. Android(安卓)Preference初探,另一种布局
  4. layout设计 屏幕适配
  5. 学徒浅析Android——Android(安卓)8.0 Lo
  6. 【10.1.1】ArcGIS Android(安卓)10.1.1 A
  7. Android(安卓)Surface 4 SurfaceFlinger
  8. Android(安卓)用户界面编程技巧和设计模
  9. Android(安卓)源码环境下 C++通过aidl与j
  10. ubuntu genymotion 启动adb 被占用5037端