您的位置:首页 > 其它

v刹许昌县

2014-07-15 23:04 106 查看
package com.example.music;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.database.Cursor;

import android.os.Bundle;

import android.provider.MediaStore.Audio.Media;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AdapterView;

import android.widget.Button;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity implements OnClickListener {

List<Object> musiclists = new ArrayList<Object>();

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

Button play_pause, stop, onplay, downplay, close, exit;

ActivityReceiver activityReceiver;

public static final String CTL_ACTION = "org.crazyit.action.CTL_ACTION";

public static final String UPDATE_ACTION = "org.crazyit.action.UPDATE_ACTION";

Intent intentservice;

// 定义音乐的播放状态 ,0X11 代表停止 ,0x12代表播放,0x13代表暂停

int status = 0x11;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

UIinit();

logic();

musicList();

activityReceiver = new ActivityReceiver();

IntentFilter filter = new IntentFilter();

filter.addAction(UPDATE_ACTION);

registerReceiver(activityReceiver, filter);

intentservice = new Intent(this, MusicService.class);

startService(intentservice);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

public void UIinit() {

play_pause = (Button) this.findViewById(R.id.play_pause);

stop = (Button) this.findViewById(R.id.stop);

onplay = (Button) this.findViewById(R.id.onplay);

close = (Button) this.findViewById(R.id.close);

exit = (Button) this.findViewById(R.id.exit);

downplay = (Button) this.findViewById(R.id.downplay);

}

public void logic() {

play_pause.setOnClickListener(this);

stop.setOnClickListener(this);

onplay.setOnClickListener(this);

downplay.setOnClickListener(this);

close.setOnClickListener(this);

exit.setOnClickListener(this);

}

@Override

public void onClick(View source) {

Intent intent = new Intent(CTL_ACTION);

switch (source.getId()) {

case R.id.play_pause: {

intent.putExtra("control", 1);

break;

}

case R.id.stop: {

intent.putExtra("control", 2);

break;

}

case R.id.onplay: {

intent.putExtra("control", 3);

break;

}

case R.id.downplay: {

intent.putExtra("control", 4);

break;

}

case R.id.close: {

this.finish();

break;

}

case R.id.exit: {

stopService(intentservice);

this.finish();

break;

}

}

sendBroadcast(intent);

}

public class ActivityReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

// 获取Intent中的update消息,update代表播放状态

int update = intent.getIntExtra("update", -1);

switch (update) {

case 0x11: {

play_pause.setText("播放");

status = 0x11;

break;

}

// 控制系统进入播放状态

case 0x12: {

// 播放状态下设置使用按钮

play_pause.setText("暂停");

// 设置当前状态

status = 0x12;

break;

}

// 控制系统进入暂停状态

case 0x13: {

play_pause.setText("播放");

status = 0x13;

break;

}

}

}

}

/* 播放列表 */

public void musicList() {

// 取得指定位置的文件设置显示到播放列表

String[] music = new String[] { Media._ID, Media.DISPLAY_NAME,

Media.TITLE, Media.DURATION, Media.ARTIST, Media.DATA };

Cursor cursor = getContentResolver().query(Media.EXTERNAL_CONTENT_URI,

music, null, null, null);

while (cursor.moveToNext()) {

Music temp = new Music();

temp.setFilename(cursor.getString(1));

temp.setTitle(cursor.getString(2));

temp.setDuration(cursor.getInt(3));

temp.setArtist(cursor.getString(4));

temp.setData(cursor.getString(5));

musiclists.add(temp);

Map<String, Object> map = new HashMap<String, Object>();

map.put("name", cursor.getString(1));

map.put("artist", cursor.getString(4));

list.add(map);

}

ListView listview = (ListView) findViewById(R.id.musics);

SimpleAdapter adapter = new SimpleAdapter(this, list,

R.layout.musicsshow, new String[] { "name", "artist" },

new int[] { R.id.name, R.id.artist });

listview.setAdapter(adapter);

listview.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view,

int current, long id) {

Intent intent=new Intent(CTL_ACTION);

intent.putExtra("control", 5);

intent.putExtra("current", current);

sendBroadcast(intent);

}

});

}

}

package com.example.music;

public class Music {

private String filename;

private String Title;

private int duration;

private String artist;

private String location;

public String getFilename() {

return filename;

}

public void setFilename(String filename) {

this.filename = filename;

}

public String getTitle() {

return Title;

}

public void setTitle(String title) {

Title = title;

}

public int getDuration() {

return duration;

}

public void setDuration(int duration) {

this.duration = duration;

}

public String getArtist() {

return artist;

}

public void setArtist(String artist) {

this.artist = artist;

}

public String getData() {

return location;

}

public void setData(String location) {

this.location = location;

}

// {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME,

// MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DURATION,

// MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.DATA

}

package com.example.music;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.app.Service;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.database.Cursor;

import android.media.MediaPlayer;

import android.media.MediaPlayer.OnCompletionListener;

import android.os.IBinder;

import android.provider.MediaStore.Audio.Media;

import android.util.Log;

public class MusicService extends Service {

List<Object> musiclists = new ArrayList<Object>();

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

MyReceiver serviceReceiver;

MediaPlayer mPlayer;

int status = 0x11;

//歌曲下标

int current = 0;

int count = 0;

int flog = 0;

//String filename;

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return null;

}

@Override

public void onDestroy() {

flog=0;

mPlayer.stop();

mPlayer.release();

super.onDestroy();

}

@Override

public void onCreate() {

flog=1;

musicList();

count = list.size();

Log.e("Service", "onStart");

serviceReceiver = new MyReceiver();

IntentFilter filter = new IntentFilter();

filter.addAction(MainActivity.CTL_ACTION);

registerReceiver(serviceReceiver, filter);

mPlayer = new MediaPlayer();

mPlayer.setOnCompletionListener(new OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

current++;

if (current >= count) {

current = 0;

}

String filename = ((Music) musiclists.get(current)).getData();

playMusic(filename);

}

});

super.onCreate();

}

@Override

public void onStart(Intent intent, int startId) {

if(flog==2){

Intent sendIntent = new Intent(MainActivity.UPDATE_ACTION);

sendIntent.putExtra("update", status);

//sendIntent.putExtra("current", current);

sendBroadcast(sendIntent);

}

flog=2;

}

private void playMusic(String path)

{

try

{

/* 重置MediaPlayer */

mPlayer.reset();

/* 设置要播放的文件的路径 */

mPlayer.setDataSource(path);

/* 准备播放 */

mPlayer.prepare();

/* 开始播放 */

mPlayer.start();

mPlayer.setOnCompletionListener(new OnCompletionListener()

{

public void onCompletion(MediaPlayer arg0)

{

//播放完成一首之后进行下一首

current--;

if (current < 0) {

current = count;

}

playMusic( ((Music) musiclists.get(current)).getData());

status = 0x12;

}

});

}catch (IOException e){}

}

/* 播放列表 */

public void musicList() {

// 取得指定位置的文件设置显示到播放列表

String[] music = new String[] { Media._ID, Media.DISPLAY_NAME,

Media.TITLE, Media.DURATION, Media.ARTIST, Media.DATA };

Cursor cursor = getContentResolver().query(Media.EXTERNAL_CONTENT_URI,

music, null, null, null);

while (cursor.moveToNext()) {

Music temp = new Music();

temp.setFilename(cursor.getString(1));

temp.setTitle(cursor.getString(2));

temp.setDuration(cursor.getInt(3));

temp.setArtist(cursor.getString(4));

temp.setData(cursor.getString(5));

musiclists.add(temp);

Map<String, Object> map = new HashMap<String, Object>();

map.put("name", cursor.getString(1));

map.put("artist", cursor.getString(4));

list.add(map);

}

}

public class MyReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

int control = intent.getIntExtra("control", -1);

switch (control) {

case 1: {

// 如果原来处于停止的状态

if (status == 0x11) {

playMusic( ((Music) musiclists.get(current)).getData());

status = 0x12;

}

// 原来处于播放状态

else if (status == 0x12) {

mPlayer.pause();

status = 0x13;

}

// 原来处于暂停状态

else if (status == 0x13) {

mPlayer.start();

status = 0x12;

}

break;

}

case 2: {

// 如果原来正在播放或暂停

if (status == 0x12 || status == 0x13) {

mPlayer.stop();

status = 0x11;

}

break;

}

case 3: {

current--;

if (current < 0) {

current = count;

}

playMusic( ((Music) musiclists.get(current)).getData());

status = 0x12;

break;

}

case 4: {

current++;

if (current > count) {

current = 0;

}

playMusic( ((Music) musiclists.get(current)).getData());

status = 0x12;

break;

}

case 5: {

current = intent.getIntExtra("current", -1);;

playMusic( ((Music) musiclists.get(current)).getData());

status = 0x12;

break;

}

}

Intent sendIntent = new Intent(MainActivity.UPDATE_ACTION);

sendIntent.putExtra("update", status);

// sendIntent.putExtra("current", current);

sendBroadcast(sendIntent);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: