android audio.mp3如何搜索或匹配Mp3的图片

「pudding camera」布丁相機是一款號稱可以讓你用手機拍出專業級藝術照的相機 APP,其包含有不同的畫面比例、魚眼、分格連拍、失焦…等 9 款不同的相機類型,以及 復古棕、復古藍、暗角、炫彩…等 8 種底片濾鏡效果,你可以在這 9 x 8 的特效世界裡,隨機選擇搭配最適合現在心情的攝影特效。
選擇好你的完美搭配後,就能直接來拍照囉!在這些特效裡,我最愛 Fantasy 的相機加上 Mono 濾鏡的感覺,很美!如果你想自拍,只要按個切換鈕,就能啟動觸屏拍攝,直接點擊螢幕任一處就能自拍。
拍完照後可直接上傳到 Facebook、Twitter…等與朋友分享你的美麗回憶。另外,若喜歡的特效組合怕忘記的話,拍好的照片會幫你記下所使用的相機、濾鏡等資訊,之後就能透過照片來找回你最愛的特效囉!
▇ 軟體小檔案 ▇
軟體名稱:pudding camera
軟體語言:繁體中文
開發人員:kth
官方網站:
軟體性質:免費軟體
系統支援:iOS 4.3 以上 / Android 2.2 以上
軟體下載(iPhone):在 iPhone 中開啟 App Store 並搜尋「pudding camera」即可下載安裝,或「」透過 iTunes 安裝。
軟體下載(Android):在 Android 手機中開啟 Play 商店,搜尋「pudding camera」即可下載安裝,或「」從網頁遠端安裝。
使用方法:
第1步 畫面左邊為「曝光補償」,當光線不足時可透過轉盤來調整。接下來點入左下角來選擇特效組合吧!
第2步 左邊選擇相機,下方選擇底片,左下角則是所選擇的特效組合。選擇好後再輕點一下螢幕任一處回到拍照畫面,按下拍照鈕就能拍照囉~_
第3步 若想自拍就按右上方的按鈕切換成自拍模式,觸屏即可拍照。
第4步 在拍照畫面進入右下角的「相簿」照片上方會記錄此照片使用的特效組合,按右邊的「相機」按鈕,即可使用此組合特效來拍照唷!「設定」可選擇照片大小以及是否記錄拍照時的地理標記…等。
阿哈~接下來就來看看我試拍的幾張照片吧~
非經授權,請勿全文轉載,本文網址:
→ 免費訂閱最新文章:
| 發佈日期:
注意事項:本站所介紹之軟體、設定或網站服務,經實際安裝測試並通過防毒軟體掃毒。但因為不同電腦環境與軟體設定可能都各有差異,建議您僅在非工作用的電腦安裝、測試,避免因為不可預知的錯誤、當機或軟硬體衝突,影響您的工作或電腦運作。另外,在進行任何重要的操作與設定之前,記得先行備份電腦中的重要資料,避免因為未依指示的不當操作或其他疏失造成資料毀損。當您依照本文所提供之訊息執行各種操作,表示您已閱讀此注意事項並同意自行承擔可能之風險與責任。
追蹤、訂閱本站最新文章
Facebook 訂閱:
Google+ 訂閱:
Google Currents 訂閱:
噗浪 Plurk 訂閱:
Twitter 訂閱:
Feedly 訂閱:
Flipboard 訂閱:(用手機,平板開)
RSS 訂閱:
關魚專欄: 關於好台
依日期列出文章
2015 年 二月
2015 年 一月
2014 年 十二月
2014 年 十一月
2014 年 十月
2014 年 九月
2014 年 八月
2014 年 七月
2014 年 六月
2014 年 五月
2014 年 四月
2014 年 三月
2014 年 二月
2014 年 一月
2013 年 十二月
2013 年 十一月
2013 年 十月
2013 年 九月
2013 年 八月
2013 年 七月
2013 年 六月
2013 年 五月
2013 年 四月
2013 年 三月
2013 年 二月
2013 年 一月
2012 年 十二月
2012 年 十一月
2012 年 十月
2012 年 九月
2012 年 八月
2012 年 七月
2012 年 六月
2012 年 五月
2012 年 四月
2012 年 三月
2012 年 二月
2012 年 一月
2011 年 十二月
2011 年 十一月
2011 年 十月
2011 年 九月
2011 年 八月
2011 年 七月
2011 年 六月
2011 年 五月
2011 年 四月
2011 年 三月
2011 年 二月
2011 年 一月
2010 年 十二月
2010 年 十一月
2010 年 十月
2010 年 九月
2010 年 八月
2010 年 七月
2010 年 六月
2010 年 五月
2010 年 四月
2010 年 三月
2010 年 二月
2010 年 一月
2009 年 十二月
2009 年 十一月
2009 年 十月
2009 年 九月
2009 年 八月
2009 年 七月
2009 年 六月
2009 年 五月
2009 年 四月
2009 年 三月
2009 年 二月
2009 年 一月
2008 年 十二月
2008 年 十一月
2008 年 十月
2008 年 九月
2008 年 八月
2008 年 七月
2008 年 六月
2008 年 五月
2008 年 四月
2008 年 三月
2008 年 二月
2008 年 一月
2007 年 十二月
2007 年 十一月
2007 年 十月
2007 年 九月
2007 年 八月
2007 年 七月
2007 年 六月
2007 年 五月
2007 年 四月
2007 年 三月
2007 年 二月
2007 年 一月
2006 年 十二月
2006 年 十一月
全部文章分類(C)2012 本站提供的内容来源于广大网络用户,我们不保证内容的正确性。如果转载了您的内容,希望删除的请联系我们!【频道】多屏视摘
国际音标手势操
奥巴马总统最新演绎,Justin Bieber热单《Boyfriend》
Everything at Once
One Direction - One Thing
艾薇儿话题新单 Hello Kitty
【英文歌曲】God is a girl
革命老歌曲《社会主义好》
播放:1859
播放:1177
路边的野花不要采
外国青春歌曲 - You’re My Favorite Song
外国歌手翻唱的华语歌曲精选
英文歌曲 我的爱
好清脆的声音 EXO少女时代FX
经典好听的英语歌曲 Joni (配海南之旅图片)
歌曲《七里香》 好学姐治愈演绎杰伦十年前经典歌曲
超好听澳大利亚英文歌曲
歌曲《飞天》MV
著名歌手含笑演唱
分享给站外好友
页面地址:
FLASH地址:
HTML代码:
通用代码:
可以让视频在手机、平板电脑上播放!
举报此视频包含不当内容:
请填写你要举报的内容,标明举报内容所在地时段,将有助于我们更及时的处理举报内容。感谢您对PPS的支持!
广告和欺诈
触犯我的版权
你可以把视频下载到不同的设备
使用电脑飞速下载轻易收藏喜欢的视频
使用苹果设备支持iPhone、iPad高清视频亦可离线观看
使用Android设备支持手机、平板高清视频亦可离线观看
拍下二维码,视频随身看
用PPS影音IOS/Android版扫描二维码,在您的移动设备上继续观看视频,也可以分享给您的好友。
经典好听的英语歌曲 Joni (配海南之旅图片)
手机没装PPS影音?
频道信息:
播放:7062
专门制作摘录优秀音乐视频的频道。
注:数据来自爱奇艺、PPS全平台
经典好听的英语歌曲 Joni (配海南之旅图片)
上传时间:8个月前
上 传 者:多屏视摘
所属频道:多屏视摘
上 传 自:
分&&&&&&类:教育
暂无相关内容
视频简介:经典好听的英语歌曲 Joni (配海南之旅图片),是嘉积高级中学外语组制作的优秀英语歌曲视频,配海南之旅图片。《多屏视摘》 为您进行智能手机流媒体制作并上传。
现在可以用QQ账号直接发表评论,分享给我的好友
大家都在看
互联网药品信息服务许可证:
互联网医疗保健信息服务许可证:
Copyright&2005 - 2014 PPStream, Inc. All Rights Reserved电信高速下载
联通高速下载
下载周排行
下载月排行欢迎大家访问游戏开发网,有您更美好!
请记住本站网址,一定要搜藏哦亲!
Android应用开发–MP3音乐播放器获取专辑图片(自定义列表适配器)实现详解(九)
Android应用开发–MP3音乐播放器获取专辑图片(自定义列表适配器)实现详解(九)
围观444次 评论关闭 编辑日期: 字体:
第二阶段已增加功能:
1、歌词滚动显示
2、来电监听
3、音量控制
4、左右滑动切换歌词与专辑界面
今天要介绍的功能是获取音乐专辑封面并显示到界面上,小巫改变了音乐列表的布局,为了显示专辑封面。之前没有意识到SimpleAdapter已经不能满足自己的需求了,后来只能参考了别人的代码,修改了原来代码,最终实现获取专辑图片。题外话,最近都一直复习大学的考试,所以断断续续地实现功能,不过也快要学期末了,也没剩多少时间,科目考试也只剩下一科,所以接下来的一周,可能会加快开发速度。争取在小巫这个学期结束前,提供完整的应用原型。由于还不专业,肯定会有很bug存在,希望想参考本人的开发能见谅。
照惯例,我会先让朋友们先看一下效果图(现在是不是简、美很多)
首先介绍布局吧:
列表布局有稍微的改变,也没什么好说的,看代码吧
/SimpleBeautyMusicPlayer/res/layout/music_list_item_layout.xml
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical" &
&ImageView
android:id="@+id/albumImage"
android:layout_width="64.0dip"
android:layout_height="64.0dip"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:src="@drawable/music" /&
android:id="@+id/music_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="5.0dp"
android:textColor="@android:color/white"
android:text="@string/time" /&
android:id="@+id/music_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/albumImage"
android:focusable="true"
android:text="@string/siger"
android:textColor="@android:color/white"
android:textSize="18sp"
android:id="@+id/music_Artist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/music_title"
android:layout_marginTop="5.0dip"
android:layout_below="@id/music_title"
android:textColor="@android:color/white"
android:text="@string/artist" /&
&/RelativeLayout&
自定义ListView适配器
/SimpleBeautyMusicPlayer/src/com/wwj/sb/adapter/MusicListAdapter.java
package com.wwj.sb.
import java.util.L
import android.content.C
import android.graphics.B
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.BaseA
import android.widget.ImageV
import android.widget.TextV
import com.wwj.sb.activity.R;
import com.wwj.sb.domain.Mp3I
import com.wwj.sb.utils.MediaU
* 自定义的音乐列表适配器
* 为了方便扩展,因为之前没有考虑到显示专辑封面
* @author wwj
public class MusicListAdapter extends BaseAdapter{
//上下文对象引用
private List&Mp3Info& mp3I //存放Mp3Info引用的集合
private Mp3Info mp3I
//Mp3Info对象引用
private int pos = -1;
//列表位置
* 构造函数
* @param context 上下文
* @param mp3Infos
public MusicListAdapter(Context context, List&Mp3Info& mp3Infos) {
this.context =
this.mp3Infos = mp3I
public int getCount() {
return mp3Infos.size();
public Object getItem(int position) {
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder =
if(convertView == null)
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.music_list_item_layout, null);
viewHolder.albumImage = (ImageView) convertView.findViewById(R.id.albumImage);
viewHolder.musicTitle = (TextView) convertView.findViewById(R.id.music_title);
viewHolder.musicArtist = (TextView) convertView.findViewById(R.id.music_Artist);
viewHolder.musicDuration = (TextView) convertView.findViewById(R.id.music_duration);
convertView.setTag(viewHolder);
//表示给View添加一个格外的数据,
viewHolder = (ViewHolder)convertView.getTag();//通过getTag的方法将数据取出来
mp3Info = mp3Infos.get(position);
if(position == pos) {
viewHolder.albumImage.setImageResource(R.drawable.item);
Bitmap bitmap = MediaUtil.getArtwork(context, mp3Info.getId(),mp3Info.getAlbumId(), true, true);
viewHolder.albumImage.setImageBitmap(bitmap);
viewHolder.musicTitle.setText(mp3Info.getTitle());
//显示标题
viewHolder.musicArtist.setText(mp3Info.getArtist());
//显示艺术家
viewHolder.musicDuration.setText(MediaUtil.formatTime(mp3Info.getDuration()));//显示时长
return convertV
* 定义一个内部类
* 声明相应的控件引用
* @author wwj
public class ViewHolder {
//所有控件对象引用
public ImageView albumI //专辑图片
public TextView musicT
//音乐标题
public TextView musicD //音乐时长
public TextView musicA //音乐艺术家
自定义适配器需要继承BaseAdapter类,主要是为了实现图片显示的显示,而不是单纯的字符串。
增加代码的MediaUtil类,主要包含获取专辑封面图片的方法,需要对图片做稍微的处理
/SimpleBeautyMusicPlayer/src/com/wwj/sb/utils/MediaUtil.java
package com.wwj.sb.
import java.io.FileD
import java.io.FileNotFoundE
import java.io.IOE
import java.io.InputS
import java.util.ArrayL
import java.util.HashM
import java.util.I
import java.util.L
import android.content.ContentR
import android.content.ContentU
import android.content.C
import android.database.C
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.BitmapFactory.O
import android.net.U
import android.os.ParcelFileD
import android.provider.MediaS
import com.wwj.sb.activity.R;
import com.wwj.sb.domain.Mp3I
public class MediaUtil {
//获取专辑封面的Uri
private static final Uri albumArtUri = Uri.parse("content://media/external/audio/albumart");
* 用于从数据库中查询歌曲的信息,保存在List当中
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)); //专辑
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.setAlbumId(albumId);
mp3Info.setDuration(duration);
mp3Info.setSize(size);
mp3Info.setUrl(url);
mp3Infos.add(mp3Info);
return mp3I
* 往List集合中添加Map对象数据,每一个Map对象存放一首音乐的所有属性
* @param mp3Infos
public static List&HashMap&String, String&& getMusicMaps(
List&Mp3Info& mp3Infos) {
List&HashMap&String, String&& mp3list = new ArrayList&HashMap&String, String&&();
for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();
HashMap&String, String& map = new HashMap&String, String&();
map.put("title", mp3Info.getTitle());
map.put("Artist", mp3Info.getArtist());
map.put("album", mp3Info.getAlbum());
map.put("albumId", String.valueOf(mp3Info.getAlbumId()));
map.put("duration", formatTime(mp3Info.getDuration()));
map.put("size", String.valueOf(mp3Info.getSize()));
map.put("url", mp3Info.getUrl());
mp3list.add(map);
return mp3
* 格式化时间,将毫秒转换为分:秒格式
* @param time
public static String formatTime(long time) {
String min = time / (1000 * 60) + "";
String sec = time % (1000 * 60) + "";
if (min.length() & 2) {
min = "0" + time / (1000 * 60) + "";
min = time / (1000 * 60) + "";
if (sec.length() == 4) {
sec = "0" + (time % (1000 * 60)) + "";
} else if (sec.length() == 3) {
sec = "00" + (time % (1000 * 60)) + "";
} else if (sec.length() == 2) {
sec = "000" + (time % (1000 * 60)) + "";
} else if (sec.length() == 1) {
sec = "0000" + (time % (1000 * 60)) + "";
return min + ":" + sec.trim().substring(0, 2);
* 获取默认专辑图片
* @param context
public static Bitmap getDefaultArtwork(Context context,boolean small) {
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.RGB_565;
if(small){ //返回小图片
return BitmapFactory.decodeStream(context.getResources().openRawResource(R.drawable.music5), null, opts);
return BitmapFactory.decodeStream(context.getResources().openRawResource(R.drawable.defaultalbum), null, opts);
* 从文件当中获取专辑封面位图
* @param context
* @param songid
* @param albumid
private static Bitmap getArtworkFromFile(Context context, long songid, long albumid){
Bitmap bm =
if(albumid & 0 && songid & 0) {
throw new IllegalArgumentException("Must specify an album or a song id");
BitmapFactory.Options options = new BitmapFactory.Options();
FileDescriptor fd =
if(albumid & 0){
Uri uri = Uri.parse("content://media/external/audio/media/"
+ songid + "/albumart");
ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r");
if(pfd != null) {
fd = pfd.getFileDescriptor();
Uri uri = ContentUris.withAppendedId(albumArtUri, albumid);
ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r");
if(pfd != null) {
fd = pfd.getFileDescriptor();
options.inSampleSize = 1;
// 只进行大小判断
options.inJustDecodeBounds =
// 调用此方法得到options得到图片大小
BitmapFactory.decodeFileDescriptor(fd, null, options);
// 我们的目标是在800pixel的画面上显示
// 所以需要调用computeSampleSize得到图片缩放的比例
options.inSampleSize = 100;
// 我们得到了缩放的比例,现在开始正式读入Bitmap数据
options.inJustDecodeBounds =
options.inDither =
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
//根据options参数,减少所需要的内存
bm = BitmapFactory.decodeFileDescriptor(fd, null, options);
} catch (FileNotFoundException e) {
e.printStackTrace();
* 获取专辑封面位图对象
* @param context
* @param song_id
* @param album_id
* @param allowdefalut
public static Bitmap getArtwork(Context context, long song_id, long album_id, boolean allowdefalut, boolean small){
if(album_id & 0) {
if(song_id & 0) {
Bitmap bm = getArtworkFromFile(context, song_id, -1);
if(bm != null) {
if(allowdefalut) {
return getDefaultArtwork(context, small);
ContentResolver res = context.getContentResolver();
Uri uri = ContentUris.withAppendedId(albumArtUri, album_id);
if(uri != null) {
InputStream in =
in = res.openInputStream(uri);
BitmapFactory.Options options = new BitmapFactory.Options();
//先制定原始大小
options.inSampleSize = 1;
//只进行大小判断
options.inJustDecodeBounds =
//调用此方法得到options得到图片的大小
BitmapFactory.decodeStream(in, null, options);
/** 我们的目标是在你N pixel的画面上显示。 所以需要调用computeSampleSize得到图片缩放的比例 **/
/** 这里的target为800是根据默认专辑图片大小决定的,800只是测试数字但是试验后发现完美的结合 **/
if(small){
options.inSampleSize = computeSampleSize(options, 40);
options.inSampleSize = computeSampleSize(options, 600);
// 我们得到了缩放比例,现在开始正式读入Bitmap数据
options.inJustDecodeBounds =
options.inDither =
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
in = res.openInputStream(uri);
return BitmapFactory.decodeStream(in, null, options);
} catch (FileNotFoundException e) {
Bitmap bm = getArtworkFromFile(context, song_id, album_id);
if(bm != null) {
if(bm.getConfig() == null) {
bm = bm.copy(Bitmap.Config.RGB_565, false);
if(bm == null && allowdefalut) {
return getDefaultArtwork(context, small);
} else if(allowdefalut) {
bm = getDefaultArtwork(context, small);
} finally {
if(in != null) {
in.close();
} catch (IOException e) {
e.printStackTrace();
* 对图片进行合适的缩放
* @param options
* @param target
public static int computeSampleSize(Options options, int target) {
int w = options.outW
int h = options.outH
int candidateW = w /
int candidateH = h /
int candidate = Math.max(candidateW, candidateH);
if(candidate == 0) {
if(candidate & 1) {
if((w & target) && (w / candidate) & target) {
candidate -= 1;
if(candidate & 1) {
if((h & target) && (h / candidate) & target) {
candidate -= 1;
如何在界面显示专辑图片?
看代码就可以看出,通过调用MediaUtil里的getArtwork()方法,就可以返回一个Bitmap对象,在通过imageView控件调用setImageBitmap方法把图片显示出来就行了。很简单对吧。
本文固定链接:
转载请注明:
作者:游戏开发
欢迎大家访问游戏开发网!
如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!
您可能还会对这些文章感兴趣!}

我要回帖

更多关于 android audio.mp3 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信