简体   繁体   English

保存视频录制时,本地通知不起作用

[英]Local Notification not working while save video recording

I want to just Generate a notification after save Video. 我只想在保存视频后生成通知。

for this i'll try below code : 为此,我将尝试下面的代码:

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

Video save perfectly in Storage and Toast msg also show. 视频也可以完美显示在Storage和Toast msg中。 but only notification not generated please help for this solution. 但仅未生成通知,请为该解决方案提供帮助。

Solution: 解:

On Android 8.0 (Oreo) you must have something called as a NotificationChannel So try the below implementation: 在Android 8.0(Oreo)上,您必须具有一个称为NotificationChannel因此请尝试以下实现:

Step1: Create Notification Channel 步骤1:建立通知频道

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);
    }
}

Finally: Then your Notification: 最后:然后您的通知:

 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());

Try this, Hope it helps. 试试这个,希望对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM