[JAVA] [Android] Empfangen Sie die Absicht mit Broadcast Reciever

Was ist ein Rundfunkempfänger?

--BroadcastReceiver ist ein Mechanismus zum Empfangen von Broadcast-Absichten.

Was ist Absicht?

--Intent ist eine Funktion jeder Anwendung. Zum Beispiel ein Mechanismus, der Anwendungen, Anwendungen und Widgets sowie Anwendungen und Systeme miteinander verbindet.

Lassen Sie uns verwenden

Ich habe den Dienst über die Aktivität gestartet → Ich habe versucht, den Empfänger beim Dienst zu registrieren

MyReceiver.java


public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction() != null) {
            if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
               Log.d("registerReceiver: ", "ON");
            }
            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                Log.d("registerReceiver: ", "OFF");
            }
        }
    }
}

MyActivity.java


public class MyActivity extends Activity {
 
    Button startButton;
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        startButton = (Button)findViewById(R.id.start_button);
        startButton.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                startForegroundService(new Intent(this(), MyService.class));
            } else {
                startService(new Intent(this(), MyService.class));
            }
        }
    }
}

MyService.java


public class MyService extends Service {

    private MyReceiver mReceiver;
    private IntentFilter mIntentFilter;
   
    @Override
    public void onCreate() {
        super.onCreate();
        //Führen Sie die Empfängerregistrierung durch
        registerScreenReceiver();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        //Empfänger freigeben
        unregisterReceiver(mReceiver);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        startInForeground();
        return START_STICKY;
    }

    //Empfänger registrieren
    private void registerScreenReceiver() {
        mReceiver = new MyReceiver();
        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction(Intent.ACTION_SCREEN_ON);
        mIntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
        registerReceiver(mReceiver, mIntentFilter);
    }

    //Generieren Sie Benachrichtigungen, um den Dienst zu aktivieren
    private void startInForeground() {
        Intent notificationIntent = new Intent(this, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(getResources().getString(R.string.app_name))
                .setContentText("test notification")
                .setTicker(getResources().getString(R.string.app_name))
                .setContentIntent(pendingIntent);
        Notification notification = builder.build();

        if (Build.VERSION.SDK_INT >= 26) {
            NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID
                    , NOTIFICATION_CHANNEL_NAME
                    , NotificationManager.IMPORTANCE_DEFAULT);
            channel.setDescription(NOTIFICATION_CHANNEL_DESC);

            NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            if (notificationManager != null) {
                notificationManager.createNotificationChannel(channel);
            }
        }
        startForeground(NOTIFICATION_ID, notification);
    }
}

Kommentar

Bemerkungen

――Da ich mir oft die meisten Lebensprotokoll- und Gesundheits-Apps anschaue, habe ich mich gefragt, wie die Daten aggregiert wurden, aber ich hatte das Gefühl, dass es viele Muster mit Absicht gibt, also habe ich sie untersucht. ――Es gibt so viele andere Absichten als die diesmal eingeführten, so dass einige Apps nützlich sein können ...

Recommended Posts

[Android] Empfangen Sie die Absicht mit Broadcast Reciever
[Android] Hinweise zu XML
Passen Sie die Listenansicht auf Android an
Mehrteilige Übertragungsbibliothek auf Android
Verwenden Sie die serielle Kommunikation unter Android
ROS App Entwicklung auf Android
Android-Entwicklung ~ Bildschirmübergang (Absicht) ~
Verwenden Sie nativen Code unter Android