android:music
package com.terry; import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import android.app.ListActivity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast; public class myActivity2 extends ListActivity implements OnClickListener {
Button play;
Button pause;
Button next;
Button last;
// ListView listViews;
List<String> list;
MediaPlayer mediaplayer;
String PATH_ROOT = "/sdcard/";
//当前项目名称
String CURRENT_ITME = "";
//当前位置
int CURRENT_POSITON = 0; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// Intent intent = new Intent();
setContentView(R.layout.main2); initViews();
initListViews();
mediaplayer = new MediaPlayer();
} private void initViews() {
// TODO Auto-generated method stub
play = (Button) findViewById(R.id.start2);
pause = (Button) findViewById(R.id.pause2);
next = (Button) findViewById(R.id.next2);
last = (Button) findViewById(R.id.last2);
play.setOnClickListener(this);
pause.setOnClickListener(this);
next.setOnClickListener(this);
last.setOnClickListener(this);
} private void initListViews() {
// 初始化ListViews
// listViews
list = new ArrayList<String>();
ArrayAdapter<String> musiclistadapter;
File file = new File(PATH_ROOT);
if (file != null) {
if (file.isDirectory()) {
File[] listfiles = file.listFiles();
if (listfiles != null) {
for (int i = 0; i < listfiles.length; i++) {
String name = listfiles[i].getName();
if (name.endsWith(".mp3")) {
list.add(name);
}
}
}
}
}
musiclistadapter = new ArrayAdapter<String>(this, R.layout.musicitme,
list);
setListAdapter(musiclistadapter);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start2:
// mediaplayer.p
playMusic(PATH_ROOT + CURRENT_ITME); break; case R.id.pause2:
if (mediaplayer.isPlaying()) {
mediaplayer.pause();
} else {
Toast.makeText(this, "没有正在播放的音乐,我自动播放咯。。。。", 100).show();
playMusic(PATH_ROOT + CURRENT_ITME);
}
break;
case R.id.next2:
System.out.println("xiayishou....");
CURRENT_POSITON += 1;
CURRENT_ITME = list.get(CURRENT_POSITON);
playMusic(PATH_ROOT + CURRENT_ITME);
System.out.println("path:" + PATH_ROOT + CURRENT_ITME);
Toast.makeText(this, "下一首音乐,path:" + PATH_ROOT + CURRENT_ITME, 100)
.show();
break;
case R.id.last2:
System.out.println("shangyishou....");
CURRENT_POSITON -= 1;
CURRENT_ITME = list.get(CURRENT_POSITON);
playMusic(PATH_ROOT + CURRENT_ITME);
System.out.println("path:" + PATH_ROOT + CURRENT_ITME);
Toast.makeText(this, "shang一首音乐,path:" + PATH_ROOT + CURRENT_ITME, 100)
.show();
break;
}
} private void playMusic(String path) {
mediaplayer.reset();
try {
mediaplayer.setDataSource(path);
mediaplayer.prepare();
mediaplayer.start();
mediaplayer
.setOnCompletionListener(new myOnCompleteMusicListener());
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } public class myOnCompleteMusicListener implements OnCompletionListener { @Override
public void onCompletion(MediaPlayer mp) {
// TODO
// playMusic(P);
} } @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
CURRENT_POSITON = position;
CURRENT_ITME = list.get(position);//获取当前位置的String字符串,即文件名
playMusic(PATH_ROOT + CURRENT_ITME);
Toast.makeText(this, "PATH:" + PATH_ROOT + CURRENT_ITME, 100).show();
System.out.println("path:" + PATH_ROOT + CURRENT_ITME);
} }

android:music的更多相关文章
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记
以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- Android UI体验之全屏沉浸式透明状态栏效果
前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...
随机推荐
- 无法在web服务器上启动调试,此项目在使用一个被配置为使用特定IP地址的网站。请在项目URL中指定计算机名称。
解决方案:IIS服务器管理-default web site 绑定-选择使用的IP-编辑-IP地址:全部未匹配
- java源码解析——Stack类
在java中,Stack类继承了Vector类.Vector类和我们经常使用的ArrayList是类似的,底层也是使用了数组来实现,只不过Vector是线程安全的.因此可以知道Stack也是线程安全的 ...
- linq to entity asp.net mvc 多字段排序
字段1 降序 字段2 降序 var str = db.xxx.OrderByDescending(p=>p.字段1).ThenByDescending(p=>p.字段2) ThenBy - ...
- QT太多的内容和模块,怎么办?
我有个问题,QT可以做许多不同的开源项目,而且每个QT新版本都那么内容,感觉学不过来.用不过来那么我们还应该学习和使用其它语言吗? 如果回答,在需要的时候学习,那么这句话意味着,这几年你基本上就局限于 ...
- 宣布正式发布 Windows Azure 多重身份验证
身份和访问管理是安全之锚,是企业 IT 部门的首要任务.它是随时随地向员工.合作伙伴和客户提供访问的关键所在.今天,我们非常高兴地宣布正式发布 Windows Azure 多重身份验证,从而为 IT ...
- 从Xib文件加载UIView的5种方式
在不同的Xib文件中最容易维护的是定义的视图,因此对于从Xib文件中加载UIView来说一个方便的流程是非常重要. 在过去的几年里我发现唯一易于管理创建和维护视图(或者任何界面元素,通常会更多)方式就 ...
- CSS3阴影 box-shadow的使用和技巧总结[转]
text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果.随着html5和CSS3的普及,这一特殊效果使用越来越普遍. 基本语法是{box-shadow:[inset ...
- android经常使用的电话操作
给大家分享一下我的一个Android工具类,能够获取手机里面的各种信息,包含拨打电话. 获取全部联系人姓名及电话,插入联系人姓名及电话,插入联系人姓名及电话.插入通话记录.获取用户全部短信.批量插入短 ...
- 关于PagedDataSource分页属性与DataSet和DataTable详解
Asp.net提供了三个功能强大的列表控件:DataGrid.DataList和Repeater控件,但其中只有DataGrid控件提供分页功能.相对DataGrid,DataList和Repeate ...
- jquery的链式操作以及事件绑定
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...