【问题标题】:Adding looping within VideoView在 VideoView 中添加循环
【发布时间】:2018-06-29 08:27:22
【问题描述】:

我在 Android Studio 中组装的一个小应用程序遇到了一些问题。本质上,该应用程序应该启动 - 自动播放视频并保持循环直到被触摸...

除了循环工作之外,我已经完成了所有工作 - 我已经尝试了这里的一些建议,但在我的情况下没有一个可行(或者没有编码技能来让它们......)

下面的主要代码

package com.pixel.danny.screensaverhfx;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.VideoView;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    VideoView videoView = findViewById(R.id.videoView);
    Uri uri=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.hab);
    videoView.setVideoURI(uri);
    videoView.requestFocus();

    videoView.start();
    videoView.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            finish();
        }
    });    }
}

【问题讨论】:

  • 当你提到自动播放视频并一直循环直到被触摸这意味着你想暂停视频或什么???
  • 对不起,触摸时应用程序不会退出 - 它基本上是一个屏幕保护程序。
  • 删除这一行finish();,这样您的应用就不会退出。它将继续播放...
  • 我想保留finish(),这就是让应用在被触摸时退出的原因——我要做的就是添加循环,这样视频就会一直播放,直到我触摸它退出。

标签: android loops android-studio android-videoview


【解决方案1】:

当您触摸Videoview 时,下面的代码正在做什么,您已完成活动,因此应用程序将关闭......

videoView.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            finish();   //remove this line 
            videoView.stopPlayback() // you can use this for stopPlay
        }
    });   

所以删除finish();你的问题得到了解决

如果你想循环播放

 videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
              Toast.makeText(getApplicationContext(), "Video completed", Toast.LENGTH_LONG).show();
              videoView.start();   //it will start again
        }
    });

【讨论】:

  • 上面的代码(循环部分)标记了代码中的许多错误
  • @Danny 好的,然后保持完成();方法...请检查我的更新答案..仍然有任何问题让我知道...带有错误日志
  • 感谢您的帮助,Gowthaman 刚刚使用您在上面编辑的内容更新了代码,但出现错误:错误:无法从静态上下文引用非静态方法 start()
  • 我已经创建了一个 pastebin 来显示我的代码,以防它是我的展示位置等link
  • 好的,所以我找到了答案 - 我将 VideoView 声明为 Final,然后您上面的代码就可以工作了!感谢您的帮助!
【解决方案2】:

而不是调用finish();,而是调用videoView.stopPlayback()

【讨论】:

  • 我打电话给finish(),这样当我触摸它时应用程序就会退出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2020-07-09
  • 2011-07-08
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多