刚学习android一个月,来写一些东西记录下自己的学习过程。
首先学习了XML的格式,之后如何设计个listview将mp3文件导入。
在扫描MP3本地文件时运用了数据库的代码。
public static List<Mp3Info> getMp3Infos(Context context) {
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
for (int i = 0; i < cursor.getCount(); i++) {
cursor.moveToNext();
Mp3Info mp3Info = new Mp3Info();
long id = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media._ID)); // 音乐id
String title = cursor.getString((cursor
.getColumnIndex(MediaStore.Audio.Media.TITLE))); // 音乐标题
String artist = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.ARTIST)); // 艺术家
String album = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.ALBUM)); // 专辑
String displayName = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
long albumId = cursor.getInt(cursor
.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
long duration = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.DURATION)); // 时长
long size = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.SIZE)); // 文件大小
String url = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DATA)); // 文件路径
int isMusic = cursor.getInt(cursor
.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC)); // 是否为音乐
if (isMusic != 0) { // 只把音乐添加到集合当中
mp3Info.setId(id);
mp3Info.setTitle(title);
mp3Info.setArtist(artist);
mp3Info.setAlbum(album);
mp3Info.setDisplayName(displayName);
mp3Info.setAlbumId(albumId);
mp3Info.setDuration(duration);
mp3Info.setSize(size);
mp3Info.setUrl(url);
mp3Infos.add(mp3Info);
}
}
return mp3Infos;
}
之后还有对于适配器的首次运用
package com.example.copymp3;
import java.util.List;
import com.examole.bean.Mp3Info;
import android.content.Context;
import android.graphics.Bitmap;
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 Myadapter extends BaseAdapter {
List<Mp3Info> songs;
Context context;
public Myadapter(List<Mp3Info> songs, Context context) {
this.songs = songs;
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return songs.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return songs.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.item_song, null);
}//判断convertView 是否为空 如果为空则新建个layoutinflater,这样不会不断生产,导致程序过慢
//以下都是item里面的样式
ImageView image = (ImageView) convertView.findViewById(R.id.im_logo2);
TextView songname = (TextView) convertView
.findViewById(R.id.play_titlename);
TextView art = (TextView) convertView.findViewById(R.id.play_artname);
TextView totaltime = (TextView) convertView
.findViewById(R.id.play_time);
//设置内容给item
songname.setText(songs.get(position).getTitle());
art.setText(songs.get(position).getArtist());
totaltime.setText(MediaUtil.formatTime(songs.get(position).getDuration()));
if (position == -1) {
image.setImageResource(R.drawable.second);
} else {
Bitmap bitmap = MediaUtil.getArtwork(context, songs.get(position)
.getId(), songs.get(position).getAlbumId(), true, true);
if (bitmap == null) {
image.setImageResource(R.drawable.second);
} else {
image.setImageBitmap(bitmap);
}
}
return convertView;
}
}
对于MP3播放器先要设计一个bean。
package com.examole.bean;
import java.io.Serializable;
/**
* 2013/5/7 mp3实体类
*
* @author wwj entery
*/
public class Mp3Info implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private long id; // 歌曲ID 3
private String title; // 歌曲名称 0
private String album; // 专辑 7
private long albumId;// 专辑ID 6
private String displayName; // 显示名称 4
private String artist; // 歌手名称 2
private long duration; // 歌曲时长 1
private long size; // 歌曲大小 8
private String url; // 歌曲路径 5
private String lrcTitle; // 歌词名称
private String lrcSize; // 歌词大小
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
public long getAlbumId() {
return albumId;
}
public void setAlbumId(long albumId) {
this.albumId = albumId;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public long getDuration() {
return duration;
}
public void setDuration(long duration) {
this.duration = duration;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getLrcTitle() {
return lrcTitle;
}
public void setLrcTitle(String lrcTitle) {
this.lrcTitle = lrcTitle;
}
public String getLrcSize() {
return lrcSize;
}
public void setLrcSize(String lrcSize) {
this.lrcSize = lrcSize;
}
}