save last position of videoView saved by sharedprefrence and start in last position (android studio)

眉间皱痕 提交于 2020-07-22 04:14:09

问题


save last position of videoView saved by sharedprefrence and start in last position (android studio) hello I serch for my problam in stackaverflow and other refrences but I dont get my answer . I use VideoView In my app I want to save the last position of videview in a sharedPrefrence to start again from the last position but it start in 0 every time please check my code and tel me what should i do.

package com.rewass.qurankurdishaudiotranslatev2.activitys;

import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.MediaController;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import com.rewass.qurankurdishaudiotranslatev2.R;
import com.rewass.qurankurdishaudiotranslatev2.adapters.RecyclerViewAdapter;
import com.rewass.qurankurdishaudiotranslatev2.model.ModelRecycler;
import com.rewass.qurankurdishaudiotranslatev2.text.Text002;

import java.util.ArrayList;
import java.util.List;

public class A002 extends AppCompatActivity {
    List<ModelRecycler> listItems;
    private InterstitialAd mInterstitialAd;
    String AudioURL = "https://download.quranicaudio.com/quran/mishaari_raashid_al_3afaasee/002.mp3";
    VideoView videoView;
    ProgressBar progressBar008;
    TextView te008;
    int progress;
    RecyclerView myrv;
    String kurdish002 = "http://sirwaan.com/aaap/audios/kurdish/sound/quran/qurankurdish/002.mp3";
    String v2kurdish002 = "https://sirwaan.com/aaap/audios/kurdish/sound/quran/newversionqurankurdish/002.mp3";
    Handler handler;
    GridLayoutManager layoutManager;
    int seekkk;
    @RequiresApi(api = Build.VERSION_CODES.M)

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

        audioSora();


    }

    SharedPreferences preferences ;
    private void audioSora() {
        preferences = getSharedPreferences("pref55",MODE_PRIVATE);

        videoView = findViewById(R.id.videoview002);

        videoView.setVideoPath(v2kurdish002);

        //control media
        MediaController mediaController = new MediaController(this);
        //set view with controller
        videoView.setMediaController(mediaController);
        //set Controller to view


        mediaController.setAnchorView(videoView);

        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {

                handler = new Handler();
                final Runnable r = new Runnable() {
                    public void run() {
                        SharedPreferences.Editor editor = preferences.edit();
                    int progress = videoView.getCurrentPosition();
                        editor.putInt("seekto", progress);
                        editor.apply();
                        seekkk = preferences.getInt("seekto", 0);
                        Toast.makeText(A002.this, seekkk+"", Toast.LENGTH_SHORT).show();
                       handler.postDelayed(this, 1000); }};

                handler.postDelayed(r, 1000);
                videoView.seekTo(seekkk);
                videoView.start();

            }
        });

    }

}

回答1:


private int time = 0;

private ScheduledExecutorService mScheduledExecutorService;
    Runnable getPositionVideo = () -> {
        time = binding.epVideoView.getCurrentPosition();
        Log.d(TAG, ": " + time);
    };


     binding.epVideoView.setOnPreparedListener(mediaPlayer -> {
            mediaController.setAnchorView(binding.epVideoView);
            binding.epVideoView.start();
            mScheduledExecutorService = new ScheduledThreadPoolExecutor(1);
            mScheduledExecutorService.scheduleWithFixedDelay(() -> {
                runOnUiThread(getPositionVideo);
                MediaControllerCustom.init(url, time);
            }, 1000, 1000, TimeUnit.MILLISECONDS);
        });


来源:https://stackoverflow.com/questions/61824051/save-last-position-of-videoview-saved-by-sharedprefrence-and-start-in-last-posit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!