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

ডালভিক যা मार না杀死 এমন অ্যান্ড্রয়েড সার্ভিস তৈরির পদ্ধতি

অ্যান্ড্রয়েডে সার্ভিস তৈরি করা যা ডালভিক/অ্যান্ড্রয়েড সিস্টেম দ্বারা সহজে কিল না হয়

এই টিউটোরিয়ালটি দেখাবে কীভাবে একটি অ্যান্ড্রয়েড সার্ভিস তৈরি করতে হয় যা ব্যাকগ্রাউন্ডে চলতে থাকে এবং সিস্টেম দ্বারা সহজে বন্ধ করা হয় না। এটি অর্জনের জন্য START_STICKY রিটার্ন করা হয় এবং WakeLock ব্যবহার করা হয় যাতে CPU স্লিপ মোডে না যায়।

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

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

ধাপ ২: লেআউট XML ফাইল সংশোধন করুন

res/layout/activity_main.xml ফাইলে নিচের কোডটি যোগ করুন। এখানে একটি TextView ব্যবহার করা হয়েছে সার্ভিস স্টার্ট/স্টপ করার জন্য।

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Service"
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

ধাপ ৩: MainActivity.java ফাইলে কোড যোগ করুন

src/MainActivity.java ফাইলে নিচের কোডটি লিখুন। TextView-এ ক্লিক করলে সার্ভিস স্টার্ট/স্টপ টগল হবে।

package com.example.andy.myapplication;

import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView text = findViewById(R.id.text);
        text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isMyServiceRunning(ServiceClass.class)) {
                    text.setText("Stopped");
                    stopService(new Intent(MainActivity.this, ServiceClass.class));
                } else {
                    text.setText("Started");
                    startService(new Intent(MainActivity.this, ServiceClass.class));
                }
            }
        });
    }

    private boolean isMyServiceRunning(Class<?> serviceClass) {
        ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
            if (serviceClass.getName().equals(service.service.getClassName())) {
                return true;
            }
        }
        return false;
    }
}

ধাপ ৪: সার্ভিস ক্লাস তৈরি করুন (ServiceClass.java)

প্যাকেজ ফোল্ডারে ServiceClass.java নামে একটি নতুন জাভা ক্লাস তৈরি করুন এবং নিচের কোডটি যোগ করুন। এই সার্ভিস WakeLock অর্জন করে এবং START_STICKY রিটার্ন করে যাতে সিস্টেম এটিকে কিল করলে অটোমেটিক রিস্টার্ট হয়।

package com.example.andy.myapplication;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.IBinder;
import android.os.PowerManager;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;

public class ServiceClass extends Service {

    PowerManager pm;
    @SuppressLint("InvalidWakeLockTag")
    PowerManager.WakeLock wl;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @SuppressLint("InvalidWakeLockTag")
    @Override
    public void onCreate() {
        super.onCreate();
        pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
    }

    @TargetApi(Build.VERSION_CODES.O)
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        wl.acquire(); // WakeLock অর্জন করুন
        // কিছু টাস্ক করুন
        Toast.makeText(this, "Notification Service started by user.", Toast.LENGTH_LONG).show();
        return START_STICKY; // সিস্টেম কিল করলে রিস্টার্ট হবে
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    public void onDestroy() {
        super.onDestroy();
        wl.release(); // WakeLock রিলিজ করুন
        Toast.makeText(this, "Notification Service destroyed by user.", Toast.LENGTH_LONG).show();
    }
}

ধাপ ৫: AndroidManifest.xml-এ পারমিশন এবং সার্ভিস ডিক্লেয়ার করুন

AndroidManifest.xml ফাইলে WAKE_LOCK পারমিশন এবং সার্ভিস কম্পোনেন্ট ডিক্লেয়ার করুন।

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

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

    <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>

        <service android:name=".ServiceClass"/>
    </application>
</manifest>

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

আপনার অ্যান্ড্রয়েড ডিভাইস কম্পিউটারের সাথে সংযুক্ত করুন। Android Studio-তে প্রজেক্টের যেকোনো এক্টিভিটি ফাইল খুলে টুলবার থেকে Run আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইসটি নির্বাচন করুন।

  • প্রাথমিক স্ক্রিনে "Start Service" টেক্সট থাকবে।
  • টেক্সটভিউতে ক্লিক করলে সার্ভিস স্টার্ট হবে এবং টেক্সট "Started" হবে।
  • আরেকবার ক্লিক করলে সার্ভিস স্টপ হবে এবং টেক্সট "Stopped" হবে।

ডালভিক যা मार না杀死 এমন অ্যান্ড্রয়েড সার্ভিস তৈরির পদ্ধতি

ডালভিক যা मार না杀死 এমন অ্যান্ড্রয়েড সার্ভিস তৈরির পদ্ধতি

ডালভিক যা मार না杀死 এমন অ্যান্ড্রয়েড সার্ভিস তৈরির পদ্ধতি

  1. অ্যান্ড্রয়েডে প্রোগ্রামেটিক্যালি GPS সক্ষম/অক্ষম করা

  2. অ্যান্ড্রয়েডে টেক্সট ফাইল তৈরি করে ডেটা লিখার পদ্ধতি

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

  4. শক্তিশালী পাসওয়ার্ড তৈরি করার কৌশল যেটি আপনি ভুলবেন না