Локальное уведомление не работает при сохранении видеозаписи - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу просто создать уведомление после сохранения видео.

для этого я попробую ниже код:

 public void stopRecordingVideo() {

        ContentValues values = new ContentValues();
        values.put(MediaStore.Video.Media.DATE_TAKEN, System.currentTimeMillis());
        values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
        values.put(MediaStore.MediaColumns.DATA, file.toString());
        activity.getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
        Toast.makeText(activity, "Video saved: " + file, Toast.LENGTH_SHORT).show();
        //Log.v(TAG, "Video saved: " + getVideoFile(context));
        Log.v(TAG, "Video saved: " + file);

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            NotificationCompat.Builder mBuilder =   new NotificationCompat.Builder(activity)
                    .setSmallIcon(R.drawable.ic_launcher_background) // notification icon
                    .setContentTitle("Notification!") // title for notification
                    .setContentText("Hello word") // message for notification
                    .setAutoCancel(true); // clear notification after click
            Intent intent = new Intent(activity, RecorderActivity.class);
            PendingIntent pi = PendingIntent.getActivity(activity,0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mBuilder.setContentIntent(pi);
            NotificationManager mNotificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            mNotificationManager.notify(1, mBuilder.build());
        } else{
            // do something for phones running an SDK before lollipop
        }



        try{
            mMediaRecorder.stop();
            mMediaRecorder.release();
        }catch(RuntimeException stopException){
            //handle cleanup here
        }

        try {
            mSession.stopRepeating();
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            setup2Record();
        } else {

            finish();  //just blows up anyway.
        }
    }

Видео отлично сохраняются в Storage и Toast MSG также показывают. но только уведомление не генерируется, пожалуйста, помогите для этого решения.

1 Ответ

0 голосов
/ 02 ноября 2018

Решение:

В Android 8.0 (Oreo) у вас должно быть что-то, называемое NotificationChannel. Попробуйте следующую реализацию:

Step1: Создать канал уведомлений

private void createNotificationChannel() {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}

Наконец: Тогда ваше уведомление:

 NotificationCompat.Builder mBuilder =   new NotificationCompat.Builder(activity)
                .setSmallIcon(R.drawable.ic_launcher_background) // notification icon
                .setContentTitle("Notification!") // title for notification
                .setContentText("Hello word") // message for notification
                .setAutoCancel(true); // clear notification after click
Intent intent = new Intent(activity, RecorderActivity.class);
PendingIntent pi = PendingIntent.getActivity(activity,0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mBuilder.setContentIntent(pi);
notificationManager.notify(1, mBuilder.build());

Попробуйте, надеюсь, это поможет.

...