Android Studio實現音樂播放器
阿新 • • 發佈:2020-11-26
Androidstudio音樂播放器,供大家參考,具體內容如下
實現目的:利用廣播在myapplication中原本button點我暫停按鈕是灰色無法點選的,此時傳送一條簡訊給自己的安卓手機,按鈕變成黑色,音樂開始播放,此時點選 點我暫停 按鈕,音樂停止。
結果截圖:
傳送簡訊給自己後:,點我暫停 按鈕變成黑色,並開始播放音樂:
此時點選點我暫停按鈕,音樂暫停
廣播
Android 應用與 Android 系統和其他 Android 應用之間可以相互收發廣播訊息,這與釋出-訂閱設計模式相似。這些廣播會在所關注的事件發生時傳送。舉例來說,Android 系統會在發生各種系統事件時傳送廣播,例如系統啟動或裝置開始充電時。再比如,應用可以傳送自定義廣播來通知其他應用它們可能感興趣的事件(例如,一些新資料已下載)。
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); //預設值為false btnStop.setEnabled(isCast); //設定停止按鈕可用和單擊監聽 if(isCast) Toast.makeText(this,"正在播放音樂...",Toast.LENGTH_SHORT).show(); btnStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v){ //顯式服務呼叫意圖(非繫結式) Intent intent=new Intent(MainActivity.this,MyAudioService.class); //在Activity元件裡,停止音樂播放服務 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,"未授權,無法實現預定的功能!",Toast.LENGTH_SHORT).show(); finish(); }else{ Toast.makeText(this,"請發一條簡訊驗證...",Toast.LENGTH_SHORT).show(); } } } }
SmsReceiver.java檔案
編寫廣播接收者程式
package com.example.myapplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /* 本廣播接收者程式分別呼叫了應用的主Activity程式和播放音樂的服務程式 */ public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context,Intent intent) { Intent serviceIntent = new Intent(context,MyAudioService.class); //在廣播元件裡,通過上下文物件啟動音樂播放服務元件 context.startService(serviceIntent); //新建呼叫Activity元件的意圖 Intent activityIntent = new Intent(context,MainActivity.class); activityIntent.putExtra("iscast",true); //攜帶資料 //新建棧用來存放被啟動的Activity(當已經存在時,只做移動處理) 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);//建立音樂服務。播放R.raw中的音樂liyue mediaPlayer.start();//開始服務 } @Override public void onDestroy() { mediaPlayer.stop(); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。