在Android中實現服務?
簡介
在許多 Android 應用程式中,我們可以看到它們執行一些後臺任務,例如在後臺播放音樂。許多音樂應用程式可以在應用程式未開啟時播放歌曲並在後臺播放音樂。此任務可以透過 Android 中的服務來完成。在本文中,我們將瞭解如何在 Android 中實現服務。
實現
我們將建立一個簡單的應用程式,其中我們將顯示一個 TextView 用於顯示應用程式的標題。然後我們將建立兩個按鈕,一個按鈕用於啟動我們的音訊服務,另一個按鈕用於停止音訊服務。
步驟 1:在 Android Studio 中建立一個新專案
導航到 Android Studio,如下面的螢幕所示。在下面的螢幕中,單擊“新建專案”以建立一個新的 Android Studio 專案。
單擊“新建專案”後,您將看到下面的螢幕。
在此螢幕中,我們只需選擇“空活動”並單擊“下一步”。單擊“下一步”後,您將看到下面的螢幕。
在此螢幕中,我們只需指定專案名稱。然後包名將自動生成。
注意:確保選擇 Java 作為語言。
指定所有詳細資訊後,單擊“完成”以建立一個新的 Android Studio 專案。
專案建立完成後,我們將看到兩個開啟的檔案,即 activity_main.xml 和 MainActivity.java 檔案。
步驟 2:使用 activity_main.xml
導航到 activity_main.xml。如果此檔案不可見。要開啟此檔案。在左側窗格中導航到 app>res>layout>activity_main.xml 以開啟此檔案。開啟此檔案後。將以下程式碼新增到其中。程式碼中添加了註釋以詳細瞭解。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- creating a text view on below line-->
<TextView
android:id="@+id/idTVHeading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:padding="4dp"
android:text="Implementing Services in Android"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold" />
<!-- creating a button on below line -->
<Button
android:id="@+id/idBtnStartAudioService"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/idTVHeading"
android:layout_margin="15dp"
android:text="Start Audio Service"
android:textAllCaps="false" />
<!-- creating a button on below line -->
<Button
android:id="@+id/idBtnStopAudioService"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/idBtnStartAudioService"
android:layout_margin="15dp"
android:text="Stop Audio Service"
android:textAllCaps="false" />
</RelativeLayout>
說明:在上面的程式碼中,我們正在建立一個根佈局作為相對佈局。在此佈局中,我們正在建立一個 TextView,用於顯示應用程式的標題。之後,我們建立了兩個按鈕,我們將使用它們來啟動和停止我們的音訊服務。
步驟 3:為我們的音訊服務建立一個新的 Java 類
導航到 app>java>您的應用程式的包名>右鍵單擊它>新建>Java 類並將其命名為 AudioService 並將以下程式碼新增到其中。程式碼中添加了註釋以詳細瞭解。
package com.example.java_test_application;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.provider.Settings;
import androidx.annotation.Nullable;
public class AudioService extends Service {
// creating variable for media player on below line.
private MediaPlayer mediaPlayer;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// initializing variable for media player.
mediaPlayer = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
// setting looping for media player and starting it.
mediaPlayer.setLooping(true);
mediaPlayer.start();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
// stopping the media player/
mediaPlayer.stop();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
說明:在上面的程式碼中,我們正在使用 Service 類擴充套件我們的 AudioService 類。在此類中,我們首先為媒體播放器建立一個變數。然後我們建立了一個 onStartCommand 方法。在此方法中,我們正在初始化我們的媒體播放器並啟動它以播放設定為裝置的預設鈴聲。然後我們建立一個 onDestory 方法,它將停止媒體播放器。
步驟 4:在 AndroidManifest.xml 檔案中新增服務
導航到 app>AndroidManifest.xml 檔案並在 application 標記中新增以下許可權以讀取簡訊。
<!-- adding a service in manifest file --> <service android:name=".AudioService" />
步驟 5:使用 MainActivity.java 檔案
導航到 MainActivity.java。如果此檔案不可見。要開啟此檔案。在左側窗格中導航到 app>res>layout>MainActivity.java 以開啟此檔案。開啟此檔案後。將以下程式碼新增到其中。程式碼中添加了註釋以詳細瞭解。
package com.example.java_test_application;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
// creating variables on below line for text view.
private Button startAudioServiceBtn, stopAudioServiceBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initializing variables on below line.
startAudioServiceBtn = findViewById(R.id.idBtnStartAudioService);
stopAudioServiceBtn = findViewById(R.id.idBtnStopAudioService);
// adding click listeners on below line.
startAudioServiceBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// on below line starting the service.
startService(new Intent(MainActivity.this, AudioService.class));
// displaying toast message on below line.
Toast.makeText(MainActivity.this, "Audio Service Started..", Toast.LENGTH_SHORT).show();
}
});
stopAudioServiceBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// on below line stopping the service.
stopService(new Intent(MainActivity.this, AudioService.class));
// displaying toast message on below line.
Toast.makeText(MainActivity.this, "Audio Service Stopped..", Toast.LENGTH_SHORT).show();
}
});
}
}
說明:在上面的程式碼中,我們首先為我們的按鈕建立變數。現在我們將看到 onCreate 方法。這是每個 Android 應用程式的預設方法。此方法在建立應用程式檢視時呼叫。在此方法中,我們正在設定內容檢視,即名為 activity_main.xml 的佈局檔案,以從該檔案設定 UI。在 onCreate 方法中,我們正在使用我們在 activity_main.xml 檔案中給出的 ID 初始化變數。之後,我們為這兩個按鈕添加了一個 onClick 監聽器。對於我們的第一個按鈕,我們正在呼叫 startService 方法來啟動我們的服務。對於第二個按鈕,我們正在呼叫 stopService 來停止我們的服務並向其傳遞一個 Intent 以供 AudioService 啟動和停止我們的服務。同時,我們顯示一條吐司訊息,表明服務已啟動或停止。
新增上述程式碼後,我們只需單擊頂部欄中的綠色圖示即可在移動裝置上執行我們的應用程式。
注意 - 確保您已連線到您的真實裝置或模擬器。
輸出
結論
在上面的程式碼中,我們瞭解瞭如何在 Android 中實現服務以及一個示例。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP