午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android Studio實(shí)現(xiàn)音樂播放器

瀏覽:26日期:2022-09-21 15:01:44

Androidstudio音樂播放器,供大家參考,具體內(nèi)容如下

實(shí)現(xiàn)目的:利用廣播在myapplication中原本button點(diǎn)我暫停按鈕是灰色無法點(diǎn)擊的,此時(shí)發(fā)送一條短信給自己的安卓手機(jī),按鈕變成黑色,音樂開始播放,此時(shí)點(diǎn)擊 點(diǎn)我暫停 按鈕,音樂停止。

結(jié)果截圖:

發(fā)送短信給自己后:,點(diǎn)我暫停 按鈕變成黑色,并開始播放音樂:

Android Studio實(shí)現(xiàn)音樂播放器

Android Studio實(shí)現(xiàn)音樂播放器

Android Studio實(shí)現(xiàn)音樂播放器

此時(shí)點(diǎn)擊點(diǎn)我暫停按鈕,音樂暫停

廣播

Android 應(yīng)用與 Android 系統(tǒng)和其他 Android 應(yīng)用之間可以相互收發(fā)廣播消息,這與發(fā)布-訂閱設(shè)計(jì)模式相似。這些廣播會(huì)在所關(guān)注的事件發(fā)生時(shí)發(fā)送。舉例來說,Android 系統(tǒng)會(huì)在發(fā)生各種系統(tǒng)事件時(shí)發(fā)送廣播,例如系統(tǒng)啟動(dòng)或設(shè)備開始充電時(shí)。再比如,應(yīng)用可以發(fā)送自定義廣播來通知其他應(yīng)用它們可能感興趣的事件(例如,一些新數(shù)據(jù)已下載)。廣播消息本身會(huì)被封裝在一個(gè)Intent對(duì)象中,該對(duì)象的操作字符串會(huì)標(biāo)識(shí)所發(fā)生的事件(例如 android.intent.action.AIRPLANE_MODE )。該 Intent 可能還包含綁定到其 extra 字段中的附加信息。例如,飛行模式 intent 包含布爾值 extra 來指示是否已開啟飛行模式。

xml文件

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:orientation='vertical' android:layout_width='match_parent' android:layout_height='match_parent' android:background='@drawable/loading'> <Button android:text='BUTTON' android:layout_marginTop='@android:dimen/app_icon_size' android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_gravity='center' android:onClick='send'/></LinearLayout>

mainactivity.java文件

package com.example.myapplication;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import androidx.core.content.ContextCompat;import android.Manifest;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private Button btnStop; private boolean isCast; //是否為廣播激活 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this,new String[]{'android.permission.RECEIVE_SMS'},1); } btnStop=findViewById(R.id.btnStop); Intent intent = getIntent(); //獲取廣播意圖對(duì)象 isCast = intent.getBooleanExtra('iscast', false); //默認(rèn)值為false btnStop.setEnabled(isCast); //設(shè)置停止按鈕可用和單擊監(jiān)聽 if(isCast) Toast.makeText(this, '正在播放音樂...', Toast.LENGTH_SHORT).show(); btnStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v){ //顯式服務(wù)調(diào)用意圖(非綁定式) Intent intent=new Intent(MainActivity.this, MyAudioService.class); //在Activity組件里,停止音樂播放服務(wù) stopService(intent); isCast=false; btnStop.setEnabled(isCast);// finish(); //銷毀本活動(dòng) } }); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case 1: if(grantResults[0]!=PackageManager.PERMISSION_GRANTED){ Toast.makeText(this, '未授權(quán),無法實(shí)現(xiàn)預(yù)定的功能!', Toast.LENGTH_SHORT).show(); finish(); }else{ Toast.makeText(this, '請(qǐng)發(fā)一條短信驗(yàn)證...', Toast.LENGTH_SHORT).show(); } } }}

SmsReceiver.java文件

編寫廣播接收者程序

package com.example.myapplication;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;/* 本廣播接收者程序分別調(diào)用了應(yīng)用的主Activity程序和播放音樂的服務(wù)程序*/public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent serviceIntent = new Intent(context, MyAudioService.class); //在廣播組件里,通過上下文對(duì)象啟動(dòng)音樂播放服務(wù)組件 context.startService(serviceIntent); //新建調(diào)用Activity組件的意圖 Intent activityIntent = new Intent(context, MainActivity.class); activityIntent.putExtra('iscast', true); //攜帶數(shù)據(jù) //新建棧用來存放被啟動(dòng)的Activity(當(dāng)已經(jīng)存在時(shí),只做移動(dòng)處理) activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //在廣播組件里,通過上下文對(duì)象啟動(dòng)Activity組件 context.startActivity(activityIntent); }}

MyAudioService.java文件

package com.example.myapplication;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.os.IBinder;public class MyAudioService extends Service { MediaPlayer mediaPlayer; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { mediaPlayer = MediaPlayer.create(this, R.raw.liyue);//創(chuàng)建音樂服務(wù)。播放R.raw中的音樂liyue mediaPlayer.start();//開始服務(wù) } @Override public void onDestroy() { mediaPlayer.stop(); }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 成人免费视频网址 | 国产精品毛片av | 日韩国产传媒 | 日韩在线观看 | www日本高清视频 | 一级片高清 | 91精品国产一区二区 | 99re6这里只有精品 | 亚洲男人天堂 | 在线观看第一页 | 懂色av粉嫩av蜜乳av | 超碰在线cao | 最好看的2019年中文在线观看 | 先锋资源中文字幕 | 日韩国产欧美一区二区三区 | 日韩av有码 | 懂色av一区二区三区在线播放 | 欧美日韩国产第一页 | 日本网站在线播放 | 久热精品在线视频 | 超碰伊人久久 | 激情久久久久久久 | 最近中文字幕在线观看视频 | 亚洲毛片在线看 | 日韩精品一区二区三区在线观看 | 御姐色网| 黄色大片免费观看 | 国产成人在线免费 | 国产精选一区二区 | 日日夜夜狠狠爱 | 可以在线观看av的网站 | 日韩精品1 | 欧洲亚洲视频 | 国产又黄又骚 | 久久乐精品 | 91免费版黄色 | 日韩色网 | 一区二区三区高清不卡 | 欧美图片一区二区 | 亚洲国产欧美视频 | 欧美日韩亚洲国产另类 |