- 浏览: 242150 次
- 性别:
- 来自: 广州
-
最新评论
-
Janne:
你好 有源代码?可以发到我的邮箱里学学吗?2731049993 ...
achartengine画出动态折线图的效果 -
anbo724:
我的邮箱 anbo724@gmail.com谢谢@
achartengine画出动态折线图的效果 -
anbo724:
你好 请问有源码没《?谢谢
achartengine画出动态折线图的效果 -
weiday123:
额,觉得这个会不会占堆内存?
AdapterView、Adapter优化 -
wen742538485:
为什么没有呢?权限没加还是发创建了给你删了再想创建?是不允许重 ...
Android中为你的应用程序添加桌面快捷方式
介绍:
你可以想像一下在cell phoneh一种流行的方式上去加载音乐.它将借助可移动的存储方介质,如SD card.在第1部分media play教程里,我们将创建一个简单的media player,它将允许用户从SD card里面去选择一首歌曲同时还可以进行播放.
Layout:
此项目由一个Activity,一个ListActivity组成。因此,对于ListActivity我们需要一个ListView来适用于这个实际的list,同时另一个View将被用于这个list每一项.对于这个例子我们将用一个TextView去显示每一个文件的名字。
首先,这里看到的是我们的ListView(songlist.xml): 复制内容到剪贴板
代码:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
<TextView id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="No songs found on SD Card."/>
</LinearLayout>
非常标准的ListView。当ListView里面没有条目时在这个布局里面用这个来表示:"@id/android:empty".这个TextView 条目将显示,同时在TextView里每一个这里都要被用于(song_item.xml):复制内容到剪贴板
代码:
<?xml version="1.0" encoding="utf-8"?>
<TextView id="@+id/text1"xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>你也许会想,为什么屏幕截图上显示的是一个黑色的ListView,layout上面没有提起任何颜色的设置?很好,这就是在AndroidManifest.xml文件里面定制的”theme(主题)”。在”应用程序”原素你能够定义这样的主题,增加:"android:theme="@android:style/Theme.Dark""。
ListActivity:
我们现在开始工作我们的ListActivity,我们将调用MusicDroid.这里是这个类和onCreate()功能的声明: 复制内容到剪贴板
代码:
public class MusicDroid extends ListActivity {
private static final String MEDIA_PATH = new String("/sdcard/");
private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
private int currentPosition = 0;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.songlist);
updateSongList();
}
首先我们将设置一个私有成员变量用被用于这个Activity。第一个是MEDIA_PATH,同时我们设置它为”/sdcard”因为这是SD card位置。接下来有一个String类型的list它将包含这每一首歌曲的名字在list里.同时我们当然还需要一个MediaPlayher对象.我们称为mp.最后一个就是我们向上时,需要确定位置currentPosition,我们将用于存放当前正在播放的这首歌曲的索引.
onCreate()功能是相当基础的,我们设置我们的View让它成为这个songlist view我们在这之上进行创建同时调用这个updateSonglist()功能,这里就是这个功能的内容: 复制内容到剪贴板
代码:
public void updateSongList() {
File home = new File(MEDIA_PATH);
if (home.listFiles(new Mp3Filter()).length > 0) {
for (File file : home.listFiles(new Mp3Filter())) {
songs.add(file.getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(this,
R.layout.song_item, songs);
setListAdapter(songList);
}
}
这里我们创建一个File对象并称为”home”指向”/sdcard”.我们在home.ListFiles()里对这些文件中进行循环并返回.增加每一个文件到我们的List对象(songs)里.一旦我们这个list装满了我们就创建一个ArrayAdapter进入这个songs list同时设置它到我们的ListActivity的ListAdapter(如:setListAdapter(songList);).这样就落户在我们的 ListView.
你也许留意到这个对象”Mp3Filter”.这是一个对象它实现FilenameFiter(文件名过滤).这个对象被用于过滤,文件通过它以后返回, 实现了这个accept(File,String)功能, 也就完成了.
这里的这个对象我们能用于过滤,因此listFiles()仅仅返回的是Mp3的文件: 复制内容到剪贴板
代码:
class Mp3Filter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3"));
}
}
现在我们应该能够去创建一个在/sdcard路径下所有mp3的list了.因此现在我们需要能够选择一首歌曲并且进行播放.第一件事首先,让我们重载onListItemClick()方法因此当一首歌曲被点击时将通知我们: 复制内容到剪贴板
代码:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
currentPosition = position;
playSong(MEDIA_PATH + songs.get(position));
}
相当基础的功能在这里.我们设置currentPosition,它里面包含了这个选中位置的索引这样点击的同时我们通过路径找到此歌曲并进行播放,因此我们去看看在playSong(String)里面到底发生了什么:
复制内容到剪贴板
代码:
private void playSong(String songPath) {
try {
mp.reset();
mp.setDataSource(songPath);
mp.prepare();
mp.start();
// Setup listener so next song starts automatically
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer arg0) {
nextSong();
}
});
} catch (IOException e) {
Log.v(getString(R.string.app_name), e.getMessage());
}
}
对于我们这里这个MediaPlayer对象使一些事情真的容易了许多.首先我们调用mp.reset(),这样做将重置MediaPlayer到它的正常的状态.这是必须的如果我们正在放一首歌曲同时又想去改变这个数据源.这个reset()功能将也停止任何正在播放的歌曲.因此如果一首歌曲是播放状态同时我们又要选择另一首歌曲那么它将在启动下一首歌曲之前停止这首正在播放的歌曲.
我们然后通过路径找到这首歌曲(mp.setDataSource(String))同时调用prepare()和start().在这里指向MediaPlayer将启动播放你的歌曲.
接下来的工作就是去装备一个OnCompletionListener (mp.setOnCompletionListener(new OnCompletionListener()启动).在歌曲结束的时候,onCompletion(MediaPlayer) 这个功能将被调用.所有的我们做的这些都是从我们的Activity中调用nextSong()功能.这里是nextSong(): 复制内容到剪贴板
代码:
private void nextSong() {
if (++currentPosition >= songs.size()) {
// Last song, just reset currentPosition
currentPosition = 0;
} else {
// Play next song
playSong(MEDIA_PATH + songs.get(currentPosition));
}
}
你可以想像一下在cell phoneh一种流行的方式上去加载音乐.它将借助可移动的存储方介质,如SD card.在第1部分media play教程里,我们将创建一个简单的media player,它将允许用户从SD card里面去选择一首歌曲同时还可以进行播放.
Layout:
此项目由一个Activity,一个ListActivity组成。因此,对于ListActivity我们需要一个ListView来适用于这个实际的list,同时另一个View将被用于这个list每一项.对于这个例子我们将用一个TextView去显示每一个文件的名字。
首先,这里看到的是我们的ListView(songlist.xml): 复制内容到剪贴板
代码:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
<TextView id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="No songs found on SD Card."/>
</LinearLayout>
非常标准的ListView。当ListView里面没有条目时在这个布局里面用这个来表示:"@id/android:empty".这个TextView 条目将显示,同时在TextView里每一个这里都要被用于(song_item.xml):复制内容到剪贴板
代码:
<?xml version="1.0" encoding="utf-8"?>
<TextView id="@+id/text1"xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>你也许会想,为什么屏幕截图上显示的是一个黑色的ListView,layout上面没有提起任何颜色的设置?很好,这就是在AndroidManifest.xml文件里面定制的”theme(主题)”。在”应用程序”原素你能够定义这样的主题,增加:"android:theme="@android:style/Theme.Dark""。
ListActivity:
我们现在开始工作我们的ListActivity,我们将调用MusicDroid.这里是这个类和onCreate()功能的声明: 复制内容到剪贴板
代码:
public class MusicDroid extends ListActivity {
private static final String MEDIA_PATH = new String("/sdcard/");
private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
private int currentPosition = 0;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.songlist);
updateSongList();
}
首先我们将设置一个私有成员变量用被用于这个Activity。第一个是MEDIA_PATH,同时我们设置它为”/sdcard”因为这是SD card位置。接下来有一个String类型的list它将包含这每一首歌曲的名字在list里.同时我们当然还需要一个MediaPlayher对象.我们称为mp.最后一个就是我们向上时,需要确定位置currentPosition,我们将用于存放当前正在播放的这首歌曲的索引.
onCreate()功能是相当基础的,我们设置我们的View让它成为这个songlist view我们在这之上进行创建同时调用这个updateSonglist()功能,这里就是这个功能的内容: 复制内容到剪贴板
代码:
public void updateSongList() {
File home = new File(MEDIA_PATH);
if (home.listFiles(new Mp3Filter()).length > 0) {
for (File file : home.listFiles(new Mp3Filter())) {
songs.add(file.getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(this,
R.layout.song_item, songs);
setListAdapter(songList);
}
}
这里我们创建一个File对象并称为”home”指向”/sdcard”.我们在home.ListFiles()里对这些文件中进行循环并返回.增加每一个文件到我们的List对象(songs)里.一旦我们这个list装满了我们就创建一个ArrayAdapter进入这个songs list同时设置它到我们的ListActivity的ListAdapter(如:setListAdapter(songList);).这样就落户在我们的 ListView.
你也许留意到这个对象”Mp3Filter”.这是一个对象它实现FilenameFiter(文件名过滤).这个对象被用于过滤,文件通过它以后返回, 实现了这个accept(File,String)功能, 也就完成了.
这里的这个对象我们能用于过滤,因此listFiles()仅仅返回的是Mp3的文件: 复制内容到剪贴板
代码:
class Mp3Filter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3"));
}
}
现在我们应该能够去创建一个在/sdcard路径下所有mp3的list了.因此现在我们需要能够选择一首歌曲并且进行播放.第一件事首先,让我们重载onListItemClick()方法因此当一首歌曲被点击时将通知我们: 复制内容到剪贴板
代码:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
currentPosition = position;
playSong(MEDIA_PATH + songs.get(position));
}
相当基础的功能在这里.我们设置currentPosition,它里面包含了这个选中位置的索引这样点击的同时我们通过路径找到此歌曲并进行播放,因此我们去看看在playSong(String)里面到底发生了什么:
复制内容到剪贴板
代码:
private void playSong(String songPath) {
try {
mp.reset();
mp.setDataSource(songPath);
mp.prepare();
mp.start();
// Setup listener so next song starts automatically
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer arg0) {
nextSong();
}
});
} catch (IOException e) {
Log.v(getString(R.string.app_name), e.getMessage());
}
}
对于我们这里这个MediaPlayer对象使一些事情真的容易了许多.首先我们调用mp.reset(),这样做将重置MediaPlayer到它的正常的状态.这是必须的如果我们正在放一首歌曲同时又想去改变这个数据源.这个reset()功能将也停止任何正在播放的歌曲.因此如果一首歌曲是播放状态同时我们又要选择另一首歌曲那么它将在启动下一首歌曲之前停止这首正在播放的歌曲.
我们然后通过路径找到这首歌曲(mp.setDataSource(String))同时调用prepare()和start().在这里指向MediaPlayer将启动播放你的歌曲.
接下来的工作就是去装备一个OnCompletionListener (mp.setOnCompletionListener(new OnCompletionListener()启动).在歌曲结束的时候,onCompletion(MediaPlayer) 这个功能将被调用.所有的我们做的这些都是从我们的Activity中调用nextSong()功能.这里是nextSong(): 复制内容到剪贴板
代码:
private void nextSong() {
if (++currentPosition >= songs.size()) {
// Last song, just reset currentPosition
currentPosition = 0;
} else {
// Play next song
playSong(MEDIA_PATH + songs.get(currentPosition));
}
}
发表评论
-
Android Tween动画之RotateAnimation实现图片不停旋转
2012-11-26 22:38 1112本文主要介绍Android中如何使用rotate实现图片不停旋 ... -
Android实现widget定时更新
2012-11-04 20:20 980在开发Android的widget时,第一个需要解决的问题就是 ... -
来自腾讯、谷歌、百度等名企的精选面试五十题
2012-10-07 23:08 957http://www.apkway.com/thread-90 ... -
Android 中Parcelable的作用
2012-09-24 09:53 903android提供了一种新的类型:Parcel。本类被用作封装 ... -
[Android算法] 【eoeAndroid索引】史上最牛最全android开发知识汇总
2012-09-13 09:33 1172http://www.eoeandroid.com/threa ... -
安卓航班推荐70个具有商业实战性的精品Android源码
2012-08-01 00:00 961http://www.apkway.com/thread-58 ... -
Android测试教程汇总
2012-08-02 14:51 1201http://www.apkway.com/thread-67 ... -
Service 与 Thread 的区别
2012-07-26 00:10 941Service 与 Thread 的区别 很多时候,你可能 ... -
android 使用百度地图画轨迹
2012-07-26 00:08 2681import android.content.Context ... -
android百度地图半径画圆
2012-07-26 00:07 2844Java代码 import android.content ... -
Android下获取开机时间
2012-07-26 00:05 1356我的思路是:程序里注册个广播接收器,接收开机启动的广播,当程序 ... -
android 高仿【优酷】圆盘旋转菜单 的实现
2012-07-26 00:03 1417MyAnimation.java Java代码 pack ... -
android 3D 转盘效果(附源码)
2012-07-25 23:41 1861一个仿3D的转盘效果,有倒影特效,旋转图标还可自动放大缩小。由 ... -
Android Thread
2012-07-23 10:47 1121创建新线程的常用方式: 1. 直接使用Thread创建 ... -
Android 通过手说tts中文语音包实现中文朗读
2012-07-22 17:09 1847Android 通过手说tts中文语音包实现中文朗读 ... -
Android 使用HTTPClient调用Web请求(查询手机号码区域)
2012-07-21 00:33 1299Android通过Apache HttpClient调用网上提 ... -
Android+struts2+JSON方式的手机开发
2012-07-21 00:14 1219http://topmanopensource.iteye.c ... -
android九宫格实现
2012-07-21 00:03 1047android九宫格实现,开始以为很复杂,其实只要知道了如何布 ... -
Android ListView圆角实现
2012-07-20 23:59 1248在android上开发项目,如 ... -
Android 将一个Activity转化为View显示出来
2012-07-19 10:27 2110最近看到好多opengl牛人写了些立方体,卷页之类的华丽的代码 ...
相关推荐
音频分类-有监督-案例01:ESC-50 audio classification_u01325.html
【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 ) https://hanshuliang.blog.csdn.net/article/details/123731092 博客源码 一、配置远程 Maven 仓库 二、配置...
project( ' :react-native-android-audio-streaming-aac ' ) . projectDir = new File (settingsDir, ' ../node_modules/react-native-android-audio-streaming-aac ' ) android/app/build.gradle .. . ...
1. **多媒体文件支持**:Android支持多种多媒体文件格式,如MP3、AAC、WAV(音频)、MP4、3GP、WebM(视频)以及JPEG、PNG、GIF、BMP(图像)。Android Media Framework是处理这些文件的核心组件。 2. **...
"toolsoft-audio-player"是一款专业的音频播放软件,专为用户提供高质量的音乐体验。这款播放器支持多种音频格式,能够满足用户对不同音频文件的播放需求。在深入了解这个软件之前,我们先来看一下它的核心特点。 1...
简单音频播放器Simple-Audio-Player 是一个轻量级的 JavaScript 库,它被实现为一个 jQuery 插件并基于 flash 和 soundmanager2。依赖关系声音管理器2 jQuery 字体真棒安装 bower install Simple-Audio-Player用法 &...
link rel =" stylesheet " type =" text/css " href =" https://cdn.jsdelivr.net/gh/greghub/green-audio-player/dist/css/green-audio-player.min.css " > < script src =" ...
ts-audio· ts-audio是一个不可知论且易于使用的库,可与AudioContext API配合使用并创建播放列表。 特征 简单的API,抽象了AudioContext API的复杂性 跨浏览器支持 轻松创建音频播放列表 与任何可编译为JavaScript...
Implementation of the missing feature in Android SDK: audio recorder with a pause. Based on mp4parser. Latest sample build Import Grab the latest version from Bintray: repositories { jcenter() } ...
React H5音频播放器 音频播放器组件,可在不同的浏览器上提供一致的UI / UX。...import AudioPlayer from 'react-h5-audio-player' ; import 'react-h5-audio-player/lib/styles.css' ; // import 'react-h
29. **`-audio-out <backend>`**: - 作用:使用指定的输出音频backend。 - 示例:`-audio-out alsa` 30. **`-raw-keys`**: - 作用:禁用Unicode键盘翻转图。 31. **`-radio`**: - 作用:重定向无线模式接口...
总结,appcan-plugin-audio-android是AppCan为Android平台提供的一款强大音频处理工具,它简化了音频操作,使得开发者无需深入了解Android原生音频编程即可实现丰富的音频功能。通过深入学习和实践,开发者可以利用...
开源项目“android-audio-visualizer”专注于实现这一功能,为Android媒体播放器提供动态、美观的音频波形或频谱显示。这个项目为开发者提供了自定义音频可视化的工具,帮助他们为自己的应用程序添加独特的音乐体验...
这个压缩包“HTML5-Audio-player.rar_audio player_html5 audio_player”包含了实现这一功能的相关文件。下面将详细探讨HTML5 Audio Player的核心知识点及其在网页开发中的应用。 首先,HTML5 Audio是HTML5标准中...
react-native-audio-video-... 您可以在本地构建它,也可以下载APK for android安装使用纱线yarn add react-native-audio-video-tools 使用Npm npm install react-native-audio-video-tools --save 然后,您需要安装
在Android平台上,FFmpeg-android 是一个专门为Android设备优化的FFmpeg版本,它允许开发者在Android应用中集成多媒体处理功能,如视频转码、音频处理、流媒体等。本文将深入探讨FFmpeg-android的关键知识点以及如何...
M-Audio FireWire Audiophile声卡可用的Windows 10驱动 1.下载FireWire Solo的驱动,传送门。它与FireWire Audiophile其实是可以兼容通用的,而且可以经过下面的步骤可以在Windows 10下使用并向下兼容。 2.不...
vue使用js-audio-recorder实现一句话识别功能:以vue前端框架+腾讯云语音识别为基础,实现客户端长按录音,获取语音转换编译出来的识别码,传给后端去腾讯云语音识别库去换取识别回来的文本尽心客户端的文本查询!...
VLC media player is a free and open source cross-platform multimedia player ...VLC for Android is a full audio player, with a complete database, an equalizer and filters, playing all weird audio formats.
【标题】"repo of Qwen-Audio (通义千问-Audio) chat & pretrained large audio" 指的是一个开源项目仓库,其中包含了通义千问-Audio的对话功能及预训练的大型音频模型。这个项目很可能是为了提供自然语言处理(NLP...