কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েড অ্যাপে কোটলিন ব্যবহার করে বুট টাইমে সার্ভিস শুরু করার পদ্ধতি

এই উদাহরণটি দেখায় কিভাবে কোটলিন ব্যবহার করে অ্যান্ড্রয়েড ডিভাইস বুট হওয়ার সাথে সাথে একটি সার্ভিস স্বয়ংক্রিয়ভাবে শুরু করা যায়। এটি BOOT_COMPLETED ব্রডকাস্ট রিসিভার ব্যবহার করে বাস্তবায়ন করা হয়।

প্রথম ধাপ: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

দ্বিতীয় ধাপ: লেআউট XML ডিজাইন করুন

res/layout/activity_main.xml ফাইলে নিচের কোড যোগ করুন:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="4dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="হ্যালো ওয়ার্ল্ড"
        android:textColor="@android:color/background_dark"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

তৃতীয় ধাপ: সার্ভিস ক্লাস তৈরি করুন (RunServiceOnBoot.kt)

একটি নতুন কোটলিন ক্লাস তৈরি করুন এবং নিচের কোড যোগ করুন:

import android.app.Service
import android.content.Intent
import android.os.Handler
import android.os.IBinder
import android.util.Log
import android.widget.Toast

class RunServiceOnBoot : Service() {
    private val TAG = "MyService"
    private lateinit var handler: Handler
    private lateinit var runnable: Runnable
    private val runTime = 5000L

    override fun onCreate() {
        super.onCreate()
        Toast.makeText(this, "সার্ভিস শুরু হয়েছে", Toast.LENGTH_SHORT).show()
        Log.i(TAG, "onCreate")
        handler = Handler()
        runnable = Runnable { handler.postDelayed(runnable, runTime) }
        handler.post(runnable)
    }

    override fun onBind(intent: Intent?): IBinder? = null

    override fun onDestroy() {
        handler.removeCallbacks(runnable)
        super.onDestroy()
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        return START_STICKY
    }

    override fun onStart(intent: Intent?, startId: Int) {
        super.onStart(intent, startId)
        Log.i(TAG, "onStart")
    }
}

চতুর্থ ধাপ: ব্রডকাস্ট রিসিভার ক্লাস তৈরি করুন (StartAppOnBoot.kt)

একটি নতুন কোটলিন ক্লাস তৈরি করুন এবং নিচের কোড যোগ করুন:

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent

class StartAppOnBoot : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        if (Intent.ACTION_BOOT_COMPLETED == intent?.action) {
            val i = Intent(context, MainActivity::class.java)
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            context?.startActivity(i)
        }
    }
}

পঞ্চম ধাপ: MainActivity.kt আপডেট করুন

src/MainActivity.kt ফাইলে নিচের কোড যোগ করুন:

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val intent1 = Intent(this@MainActivity, RunServiceOnBoot::class.java)
        startService(intent1)
    }
}

ষষ্ঠ ধাপ: ম্যানিফেস্ট ফাইলে পারমিশন এবং কম্পোনেন্ট রেজিস্টার করুন

androidManifest.xml ফাইলে নিচের পরিবর্তনগুলো করুন:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.q9">

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".StartAppOnBoot">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            </intent-filter>
        </receiver>

        <service android:name=".RunServiceOnBoot" />

    </application>
</manifest>

গুরুত্বপূর্ণ নোট

  • এই ফিচারটি শুধু ফিজিক্যাল ডিভাইসে কাজ করে, এমুলেটরে নাও।
  • অ্যান্ড্রয়েড ৮.০ (API 26) এবং তার উপরে, ব্যাকগ্রাউন্ড সার্ভিস সীমাবদ্ধতার কারণে ফোরগ্রাউন্ড সার্ভিস ব্যবহার করা ভালো।
  • কিছু ডিভাইসে "Auto-start" পারমিশন অ্যাপ সেটিংসে থেকে দিতে হতে পারে।

অ্যাপ্লিকেশন চালানোর নির্দেশনা

অ্যান্ড্রয়েড ডিভাইসে ইনস্টল করে ডিভাইস রিবুট করুন। রিবুট hoàn होने পর সার্ভিস স্বয়ংক্রিয়ভাবে শুরু হবে এবং টোস্ট মেসেজ দেখাবে।

  1. অ্যান্ড্রয়েডে AlarmManager ব্যবহার করে সার্ভিস শুরু করার পদ্ধতি

  2. Android-এ বুট টাইমে সার্ভিস শুরু করার পদ্ধতি

  3. Android-এ বুট টাইমে অ্যাপ্লিকেশন শুরু করার পদ্ধতি

  4. Android-এ বাটন দিয়ে হোম স্ক্রিনে যাওয়ার পদ্ধতি