zoukankan      html  css  js  c++  java
  • Android服务—基于MediaPlayer后台播放音乐

    Android服务—基于MediaPlayer后台播放音乐

    操作环境:Android Studio 4.0.0、SDK Level 21(版本5.0 Lollipop)、Windows 10、集成显卡RX550、CPU i7-8

    一、设置布局

    ​ 在布局文件(activity_main.xml)中随意布局,我的布局是用的相对布局,如下图所示:

    UW1lv9.png

    ​ 当然这个居中的效果就是利用相对布局中的gravity属性,将其中包含的center、center_vertical和center_horizontal都设置为true即可。

    二、设置按钮响应函数

    ​ 在MainActivity.java中创建新的函数,命名为onClickPlayMusic,当然命名随意了,如下面代码所示:

    public void onClickPlayMusic(View btn) {
        Intent intent = new Intent(MainActivity.this, PlayMusicService.class);
        startService(intent);
    }
    

    ​ 其中的PlayMusicService便是今天的重点。到现在为止,应该不难理解这句话的意思:当用户点击播放音乐的按钮时,我们用Intent传递一个东西(啥都没有)到一个名为PlayMusicService的服务。

    ​ 所以我们是在自定义的PlayMusicService服务中实现音乐的播放的。

    三、设置PlayMusicService服务

    ​ 自己建立一个服务是一个很麻烦的事儿,不过好在AS已经帮我们完成了一个创建服务的向导。步骤如图:

    UW1GHx.png UW13uR.png

    四、重写onHandleIntent()方法

    ​ 将onHandleIntent()方法的方法体清空,然后里面写入播放音乐的代码:

    @Override
    protected void onHandleIntent(Intent intent) {
        MediaPlayer mediaPlayer = 
            MediaPlayer.create(
            	getApplicationContext(), 
            	R.raw.the_story_between_moon_and_me
        	);
        
        mediaPlayer.start();
    }
    

    ​ 然后你就以为你做完了,当然没有。怎么可能,自始至终都没见着音频文件。而且这个地方还是一个容易出错的地方,尤其是这个R.raw.the_story_between_moon_and_me。

    五、放入音频文件

    (1)新建raw文件夹

    UW18D1.png

    (2)放入音频文件

    直接将.mp3文件拖入raw文件夹中,但是操作必须在AS中完成。即将文件拖入AS不松手再复制到raw中。

    切记,在android的资源文件中不能出现大写的文件名,因为大写的字母不能在R.java中识别生成id。

    ​ 在做完上述两步后,有部分同志可能遇到这样的情况:

    《引用自Android Studio中R无法找到res/raw文件夹》,作者王睿丶

    ​ 不要慌张,我们只需要重建(Rebuild)项目即可,也就是说AS不能及时发现我们其实已经建立了一个文件夹,所以需要我们手动重构项目。如下图所示:

    UW1QgJ.png

    音频文件(下载):ラックライフ-僕と月の話

    音频文件(试听):ラックライフ-僕と月の話

  • 相关阅读:
    BZOJ 2574: [Poi1999]Store-Keeper
    BZOJ 1024: [SCOI2009]生日快乐
    BZOJ 2541: [Ctsc2000]冰原探险
    hihoCoder 1303 数论六·模线性方程组
    Codeforces 710 D. Two Arithmetic Progressions
    BZOJ 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘
    ZJOI2014 2048
    51Nod 1766 树上的最远点对
    Codeforces 727 F. Polycarp's problems
    BZOJ 3736: [Pa2013]Karty
  • 原文地址:https://www.cnblogs.com/SimbaWang/p/13340748.html
Copyright © 2011-2022 走看看