欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年11月25日 09:50:46   作者:zhoulingziCSDN  
這篇文章主要為大家詳細(xì)介紹了Android Studio實現(xiàn)音樂播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

結(jié)果截圖:

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

此時點擊點我暫停按鈕,音樂暫停

廣播

Android 應(yīng)用與 Android 系統(tǒng)和其他 Android 應(yīng)用之間可以相互收發(fā)廣播消息,這與發(fā)布-訂閱設(shè)計模式相似。這些廣播會在所關(guān)注的事件發(fā)生時發(fā)送。舉例來說,Android 系統(tǒng)會在發(fā)生各種系統(tǒng)事件時發(fā)送廣播,例如系統(tǒng)啟動或設(shè)備開始充電時。再比如,應(yīng)用可以發(fā)送自定義廣播來通知其他應(yīng)用它們可能感興趣的事件(例如,一些新數(shù)據(jù)已下載)。
廣播消息本身會被封裝在一個Intent對象中,該對象的操作字符串會標(biāo)識所發(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(); //獲取廣播意圖對象
  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(); //銷毀本活動
   }
  });
 }
 @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),無法實現(xiàn)預(yù)定的功能!", Toast.LENGTH_SHORT).show();
     finish();
    }else{
     Toast.makeText(this, "請發(fā)一條短信驗證...", 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);
  //在廣播組件里,通過上下文對象啟動音樂播放服務(wù)組件
  context.startService(serviceIntent);

  //新建調(diào)用Activity組件的意圖
  Intent activityIntent = new Intent(context, MainActivity.class);
  activityIntent.putExtra("iscast", true); //攜帶數(shù)據(jù)
  //新建棧用來存放被啟動的Activity(當(dāng)已經(jīng)存在時,只做移動處理)
  activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  //在廣播組件里,通過上下文對象啟動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();
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決EditText不顯示光標(biāo)的三種方法(總結(jié))

    解決EditText不顯示光標(biāo)的三種方法(總結(jié))

    下面小編就為大家?guī)硪黄鉀QEditText不顯示光標(biāo)的三種方法(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Kotlin淺析延遲初始化與密封類的實現(xiàn)方法

    Kotlin淺析延遲初始化與密封類的實現(xiàn)方法

    Kotlin語言的許多特性,包括變量不可變,變量不可為空,等等。這些特性都是為了盡可能地保證程序安全而設(shè)計的,但是有些時候這些特性也會在編碼時給我們帶來不少的麻煩,下面我們來了解延遲初始化和密封類的特點
    2022-08-08
  • Android中的全局變量與局部變量使用小結(jié)

    Android中的全局變量與局部變量使用小結(jié)

    這篇文章主要介紹了Android中的全局變量與局部變量使用小結(jié),全局變量顧名思義就是在整個的類中或者可在多個函數(shù)中調(diào)用的變量,也稱為外部變量,局部變量則是特定過程或函數(shù)中可以訪問的變量,需要的朋友可以參考下
    2015-01-01
  • Android中如何實現(xiàn)清空搜索框的文字

    Android中如何實現(xiàn)清空搜索框的文字

    本文主要介紹Android中實現(xiàn)清空搜索框的文字的方法。項目中的有關(guān)搜索的地方,加上清空文字的功能,目的是為了增加用戶體驗,使用戶刪除文本更加快捷。需要的朋友一起來看下吧
    2016-12-12
  • Android 分享控件的實現(xiàn)代碼

    Android 分享控件的實現(xiàn)代碼

    這篇文章主要介紹了Android 分享控件的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • android仿音悅臺頁面交互效果實例代碼

    android仿音悅臺頁面交互效果實例代碼

    這篇文章主要介紹了android 仿音悅臺頁面播放效果實例代碼,新版的音悅臺 APP 播放頁面交互非常有意思,可以把播放器往下拖動,然后在底部懸浮一個小框,還可以左右拖動。
    2017-01-01
  • Android實現(xiàn)九宮格圖案解鎖

    Android實現(xiàn)九宮格圖案解鎖

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)九宮格圖案解鎖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android使用Circular Reveal動畫讓頁面跳轉(zhuǎn)更炫酷

    Android使用Circular Reveal動畫讓頁面跳轉(zhuǎn)更炫酷

    本篇文章主要介紹了Android使用Circular Reveal動畫讓頁面跳轉(zhuǎn)更炫酷,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Android適配器Adapter與ListView和RecycleView的簡單使用

    Android適配器Adapter與ListView和RecycleView的簡單使用

    本文將為大家介紹Android開發(fā)中常用的適配器(Adapter)概念,以及ListView和RecycleView的簡單使用方法,需要的朋友可以參考下
    2023-05-05
  • Android中OptionMenu用法實例

    Android中OptionMenu用法實例

    這篇文章主要介紹了Android中OptionMenu用法,實例分析了Android中OptionMenu創(chuàng)建操作的相關(guān)實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論