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的更多相关文章

  1. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  2. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  3. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  4. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  5. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  8. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  9. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  10. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

随机推荐

  1. 记录:sea.js和require.js配置 与 性能对比

    最近有点忙,很久无写博客,记录一下之前的配置require.js和sea.js的配置.(有误有望提出 require.js 文件目录 /app(项目使用js) /lib(require.js jq存放 ...

  2. MVC-04 视图(3)

    五.Url辅助方法 Url辅助方法与HTML辅助方法很类似,HTML辅助方法用来产生HTML标签,而Url辅助方法则负责用来产生Url网址. @Url.Action("About" ...

  3. sqlite详细介绍

    ------------------------------------------------------------------------------SQLite简介-------------- ...

  4. 射频识别技术漫谈(21)——RC系列射频芯片的天线设计

    个人感觉使用RC系列射频芯片开发卡片读写器,主要的关键点有两个,分别涉及硬件和软件.软件上的关键是如何正确设置RC系列射频芯片内部的64个寄存器,硬件上的关键则是RC系列射频芯片的天线设计.天线提供了 ...

  5. MinGW 编译zlib、libpng、libjpeg、libcurl等(全都是Qt项目)

    MinGW 这里使用的是Qt5自带的MinGw版本,将路径D:\Qt\Qt5.1.0\Tools\mingw48_32\bin加到"环境变量"→"系统变量"→& ...

  6. Boyer–Moore (BM)字符串搜索算法

    在计算机科学里,Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法.它由Bob Boyer和J Strother Moore设计于1977年.此算法仅对搜索目标字符串(关键字)进行预处 ...

  7. C#中Cache用法

    C#中Cache用法     Cache 是分配在服务器上的一个公共的内存片,所谓公共指的cache只要一创建是任何一个客户端浏览器都可以通过后台代码访问到它,它面向的是所有用户,相对而言sessio ...

  8. 基于maven插件的缓存控制插件

    asset-cache-control github源码及下载地址: https://github.com/StruggleBird/asset-cache-control 基于maven插件的缓存控 ...

  9. java代码获取ip地址

    public class IpTool { public static void main(String[] args) { IpTool ipTool=new IpTool(); System.ou ...

  10. .NET参数化Oracle查询参数

    最近在做数据库移植工作(SqlServer 2008 -> Oracle 11g),遇到一些不兼容的问题,以下是一个参数化方面的区别,资料来自其他网友,在此整理了一下. public stati ...