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 的说法, 给用户一种 身临其境 的体 ...
随机推荐
- tmod命令
tmod ./tpl --debug --no-watch --output ./tplbuild
- [LeetCode]题解(python):080-Remove Duplicates from Sorted Array II
题目来源: https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/ 题意分析: 跟定一个排好序的数组.修改这个数组使 ...
- How to configure connectingstrings in Web.config
先来看一下默认的连接SQL Server数据库配置<connectionStrings> <add name="LocalSqlServer" connect ...
- BZOJ 1096
const maxm=1e100; maxn=; ..maxn] of int64; q:..maxn] of longint; n,i,h,t:longint; function calc(j,i: ...
- android点滴之PendingIntent的使用
一概念 PendingIntent就是一个能够在满足一定条件下运行的Intent,它相比于Intent的优势在于自己携带有Context对象.这样他就不必依赖于某个activity才干够存在. 它和I ...
- python下使用protobuf
python解决ImportError: No module named google.protobuf 关于protocol buffer的优点,就过多涉及:如果涉及到数据传输和解析,使用pb会比自 ...
- jQuery对DOM的操作
"jQuery中非常重要的部分,就是对DOM的操作!" "jQuery中非常重要的部分,就是对DOM的操作!" "jQuery中非常重要的部分,就是对 ...
- .net 中文显示乱码问题(Chinese display with messy code)
Case:同样的代码,本地开发环境(local is Chinese Simplify)可以成功运行,但是放到Windows Server 2008 R2(Local is United State) ...
- 2013 南京邀请赛 K题 yet another end of the world
/** 大意:给定一组x[],y[],z[] 确定有没有两个不同的x[i], x[j] 看是否存在一个ID使得 y[i]<=ID%x[i]<=z[i] y[j]<=ID%x[j]&l ...
- hdu 3625 第一类striling 数
/** 第一类Stirling数是有正负的,其绝对值是包含n个元素的集合分作k个环排列的方法数目. 递推公式为, S(n,0) = 0, S(1,1) = 1. S(n+1,k) = S(n,k-1) ...