andorid Activity和Service音乐播放器

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hanqi.testservice">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MusicPlay2">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MusicPlay1">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name=".TestService1"
            android:enabled="true"
            android:exported="true" />
        <service
            android:name=".MusicService"
            android:enabled="true"
            android:exported="true"></service>
    </application>

</manifest>

activity_music_play1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.hanqi.blacklist.MusicPlay1"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="播放状态:"
        android:id="@+id/tv_1"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="播放"
            android:onClick="play_onclick"/>
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="暂停"
            android:onClick="pause_onclick"/>
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="停止"
            android:onClick="stop_onclick"/>
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="退出"
            android:onClick="exit_onclick"/>
    </LinearLayout>

</LinearLayout>

MusicPlay1.java

package com.hanqi.testservice;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MusicPlay1 extends AppCompatActivity {
    TextView tv1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_music_play1);

        tv1 = (TextView)findViewById(R.id.tv_1);
        tv1.setText("播放状态:停止");
    }
    //媒体播放器的类
    private MediaPlayer mediaPlayer;
    public void play_onclick(View v)
    {
        if (mediaPlayer == null) {
            //调用MediaPlayer的静态方法create()
            mediaPlayer = MediaPlayer.create(this, R.raw.shinain);
        }
        mediaPlayer.start();

        tv1.setText("播放状态:正在播放");
    }
    public void stop_onclick(View v)
    {
        if (mediaPlayer != null)
        {
            mediaPlayer.stop();//停止
            mediaPlayer.reset();//重置
            mediaPlayer.release();//释放
            mediaPlayer = null;
        }
        tv1.setText("播放状态:停止");
    }
    public void pause_onclick(View v)
    {
        if (mediaPlayer != null&& mediaPlayer.isPlaying())
        {
            mediaPlayer.pause();
            tv1.setText("播放状态:暂停");
        }

    }
    public void exit_onclick(View v)
    {
        stop_onclick(v);
        //退出
        finish();

    }

}

MusicService.java

package com.hanqi.testservice;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;

public class MusicService extends Service {
    public MusicService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    private MediaPlayer mediaPlayer;
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //获取意图传递的信息
        String action = intent.getStringExtra("action");
        switch (action)
        {
            case "play":
                if (mediaPlayer == null)
                {
                    mediaPlayer = MediaPlayer.create(this,R.raw.shinain);
                }
                mediaPlayer.start();
                break;
            case "stop":
                if (mediaPlayer != null)
                {
                    mediaPlayer.stop();
                    mediaPlayer.reset();
                    mediaPlayer.release();
                    mediaPlayer = null;
                }
                break;
            case "pause":
                if (mediaPlayer != null && mediaPlayer.isPlaying()) {
                    mediaPlayer.pause();
                }
                break;
        }

        return super.onStartCommand(intent, flags, startId);
    }
}

MusicPlay2.java

package com.hanqi.testservice;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

public class MusicPlay2 extends AppCompatActivity {
    TextView tv1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_music_play1);

        tv1 = (TextView)findViewById(R.id.tv_1);
        tv1.setText("播放状态1:停止");
    }

    public void play_onclick(View v)
    {
        Intent intent = new Intent(this,MusicService.class);
        intent.putExtra("action", "play");
        startService(intent);
        tv1.setText("播放状态1:正在播放...");
    }
    public void stop_onclick(View v)
    {
        Intent intent = new Intent(this,MusicService.class);
        intent.putExtra("action","stop");
        startService(intent);
        tv1.setText("播放状态1:停止");
    }
    public void pause_onclick(View v)
    {
        Intent intent = new Intent(this,MusicService.class);
        intent.putExtra("action","pause");
        startService(intent);
            tv1.setText("播放状态1:暂停");
    }
    public void exit_onclick(View v)
    {
        stop_onclick(v);
        //退出
        finish();

    }

}
时间: 2025-01-02 14:48:48

andorid Activity和Service音乐播放器的相关文章

Android基于发展Service音乐播放器

这是一个基于Service组件的音乐播放器,程序的音乐将会由后台的Service组件负责播放,当后台的播放状态改变时,程序将会通过发送广播通知前台Activity更新界面:当用户单击前台Activity的界面button或拖动进度条时,系统通过发送广播通知后台Service来改变播放状态和播放指定音乐. 程序执行效果图:         watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ3l1emhlbmdmYW4=/font/5a6L5L2T/

Android开发6:Service的使用(简单音乐播放器的实现)

前言 啦啦啦~各位好久不见啦~博主最近比较忙,而且最近一次实验也是刚刚结束~ 好了不废话了,直接进入我们这次的内容~ 在这篇博文里我们将学习Service(服务)的相关知识,学会使用 Service 进行后台工作, 学会使用 Service 与 Activity 进行通信,并在此知识基础上学会使用 MediaPlayer和简单的多线程编程.使用 Handle 更新 UI,并设计成功一个简单的音乐播放器. 是不是很高大上呢~一起来学习~ 基础知识 Service作为Android四大组件之一,在每

Android(java)学习笔记234: 服务(service)之音乐播放器

1.我们播放音乐,希望在后台长期运行,不希望因为内存不足等等原因,从而导致被gc回收,音乐播放终止,所以我们这里使用服务Service创建一个音乐播放器. 2.创建一个音乐播放器项目(使用服务) (1)首先新建一个Android项目,命名为"Mp3音乐播放器",如下: (2)创建服务MusicService,如下: 1 package com.himi.Mp3player; 2 3 import android.app.Service; 4 import android.content

基于Service的音乐播放器

这是一个基于Service组件的音乐播放器,程序的音乐将会由后台的Service组件负责播放,当后台的播放状态改变时,程序将会通过发送广播通知前台Activity更新界面:当用户单击前台Activity的界面按钮或拖动进度条时,系统通过发送广播通知后台Service来改变播放状态和播放指定音乐. 程序运行效果图:         程序代码: 程序界面类(MusicBox.java): package com.jph.musicbox; import com.jph.util.ConstUtil;

Xamarin.Android开发音乐播放器

最近.Net开源着实让C#火了一把,好久就听说Mono for Android一直没静下心来看,上周末找来看看,确实不错,前台界面axml编写跟Java安卓开发毫无区别,后台用C#其实很多windows下的方法都可以用,做一个安卓音乐播放器,主要实现音乐播放,上一曲下一曲,音乐播放列表,随机播放,扫描SD卡内所有音乐. 先show一组界面啊,话说有图有真相啊: 项目结构如图: Lrc是歌词处理方法 MusicService是安卓服务播放音乐,服务Broadcast,以及界面接收Receiver

安卓第十七天笔记--简易版本音乐播放器

title:简易版本音乐播放器 简易版本音乐播放器 1.布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="

如何写一个正经的Android音乐播放器 一

以前写过很多次音乐播放器,但是总有一些问题出现,例如: 1,音乐长时间播放问题(即便是放在service中去播放,依然会被杀死): 2,音乐的播放进度如何掌握?(如何利用mediaplayer.getCurrentPosition()来有效的通知界面变更进度?): 3,在我以往的经验中,音乐播放完毕下一曲时候,经常出现当前音乐播放还差几秒钟的时候就下一曲了的情况. 从网上找到教程中,通常都是一个播放器的demo,简单的直接把MediaPlayer放在了一个Activity中去操作,稍有良心的教程

[Android应用]音乐播放器

Service是一个不可见的进程在后台执行. Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,例如我们打开一个音乐播放器来听音乐,在听音乐的同时也想做下其它的事情,比如上网聊Q.或者上网浏览新闻之类的事情.这样的话,我们就需要用到Service服务了.下面我们以一个简单的音乐播放器的实例来说明下Service的生命周期和Service的使用. 下面是音乐播放器Demo的程

android开发之MediaPlayer+Service MP3播放器

http://blog.csdn.net/zzy916853616/article/details/6450753 [java] view plaincopy import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.apps.service.Player