我用Webview展示了WebApp.在这些页面中,我有一些视频链接(MP4,3GP ......).当我点击链接时,什么都没发生?有人可以帮忙解决这个案子吗?
public class luxgateway extends Activity {
WebView myWebView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myWebView = (WebView) findViewById(R.id.webview);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setAllowFileAccess(true);
WebViewClient webViewClient = new MyWebViewClient();
myWebView.setWebViewClient(webViewClient);
myWebView.loadUrl("http://www.example.com/demo.html");
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private class MyWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.endsWith(".3gp")) {
Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
view.getContext().startActivity(intent);
return true;
} else …
Run Code Online (Sandbox Code Playgroud) 我有一个android视频播放器,它以名称和文件大小显示SD卡上的所有视频,但大小以字节显示,我无法将其转换为KB,MB,GB等。我尝试将int值除以1024但它不起作用,它将输出错误的值。有人可以帮忙吗?
SDVideos.java
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.text.DecimalFormat;
public class SDVideos extends Activity
{
private Cursor videoCursor;
int videoColumnIndex;
ListView videolist;
int count;
String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,MediaStore.Video.Thumbnails.VIDEO_ID };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sdvideos);
initialization();
}
private void …
Run Code Online (Sandbox Code Playgroud) 我能够录制视频,但我没有收到该视频的音频.任何人都可以帮我同时录制视频和音频.我的代码如下:
mr = new MediaRecorder();
mr.setAudioSource(MediaRecorder.AudioSource.MIC);
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mr.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mr.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mr.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mPreview = new Preview(RecordVideo.this,mr);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Run Code Online (Sandbox Code Playgroud)
当我把audioSource和audioEncoder放到运行时出错时:log cat详细信息是:
05-07 10:17:01.175: ERROR/MediaRecorder(22990): setAudioEncoder called in an invalid state(2)
05-07 10:17:01.175: ERROR/AndroidRuntime(22990): at android.media.MediaRecorder.setAudioEncoder(Native Method)
Run Code Online (Sandbox Code Playgroud)
当我从代码中删除那些audioSource和audioEncoder时,它对没有音频的视频工作正常.我需要预先提供带视频的音频:
在android中为应用程序如果你需要打开任何链接默认我们可以在浏览器中启动它而不是加载它WebView
,同样如果我想播放视频,我有视频URL,我怎么能在默认视频播放器中播放它android,而不是使用VideoView
.
如果有人知道意味着帮助我吗?
谢谢.
在我的应用程序中,我将播放VideoView.
我没有使用Media Controller作为播放,暂停和停止等变量选项.
而不是我使用单个按钮来使用播放和暂停功能.
我有像下面的代码实现:
case R.id.playVideoBtn:
if(myVideoView.isPlaying()){
myVideoView.pause();
}else{
//MediaController ctlr=new MediaController(this);
// ctlr.setMediaPlayer(myVideoView);
//myVideoView.setMediaController(ctlr);
myVideoView.start();
}
break;
Run Code Online (Sandbox Code Playgroud)
现在我很想知道如何为同一个Button Click实现Pause功能.
请帮帮我.
谢谢.
android android-ndk android-video-player android-layout android-videoview
我正在开发一个仅针对平板电脑的Android应用程序.最低要求api级别为3.1.该应用程序将流式传输一些直播电视频道.
我测试了RTSP和HLS,两者运行良好.然而,HLS似乎没有更好的工作,并且调用VideoView的onCompletion,因为流来自尚未完成的直播电视,所以不应该调用它.
我有每个电视频道的RTSP和HLS流网址.我知道Android Android 3.0+支持HLS,但我也可以玩RTSP.
哪一个比另一个好,为什么?
所以我正在播放外部存储(sdcard)的视频,我在播放视频时出现问题,这是我的代码:
Uri uri = Uri.parse(url);
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "video/*");
Run Code Online (Sandbox Code Playgroud)
它提示"抱歉,这个视频无法播放",但在普通的Android播放器中,它是可播放的.我打印了网址,这就是我得到的:
VideoPlayer url: file:///mnt/sdcard/foldername/video-2012-12-26-21-26--44.mp4
Run Code Online (Sandbox Code Playgroud)
这是uri的问题吗?如果不是,你能指出我正确的方向.另外,如果我尝试一个带点(.)的foldername,我会遇到问题吗?
url = file:///mnt/sdcard/Android/data/com.example.project/video-2012-12-26-21-26--44.mp4
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:由于我的真正问题没有解决,也没有人想再回答,我开辟了一个新问题: Android:视频可以从画廊播放但是当我使用Intent.ACTION_VIEW类型视频播放时,无法播放
部分回答我的问题:
由于命名约定,会出现此问题.我认为播放器不接受其中包含" - "的文件名.所以我通过更改文件名格式解决了这个问题.
//免责声明:我没有完整的解释和来源,但这些信息只是从我的解决方法中推断出来的.
我在朗姆酒
时使用此代码更改视频因此,我正在使用此代码
VideoView video;
DisplayMetrics dm;
dm=new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
height=dm.heightPixels;
width=dm.widthPixels;
video.setMinimumHeight(height);
video.setMinimumWidth(width);
Run Code Online (Sandbox Code Playgroud)
点击菜单项我正在使用它
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case SMALL:
video.setMinimumHeight(height/2);
video.setMinimumWidth(width/2);
Toast.makeText(getApplicationContext(), "Small called", Toast.LENGTH_LONG).show();
break;
case DEFAULT:
video.setMinimumHeight(height);
video.setMinimumWidth(width);
Toast.makeText(getApplicationContext(), "Default called", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
但仍然没有改变......有人可以帮忙吗?
android android-video-player android-mediaplayer android-view android-videoview
我的文件res/raw
夹中有一个dog.mp4视频文件,我想与ExoPlayer一起播放。我正在尝试从ExoPlayer开发人员指南(https://google.github.io/ExoPlayer/guide.html)中找出如何获取此代码行的视频Uri :
MediaSource videoSource = new ExtractorMediaSource(mp4VideoUri,
dataSourceFactory, extractorsFactory, null, null);
Run Code Online (Sandbox Code Playgroud)
要获得它,我使用以下行:
Uri mp4VideoUri = Uri.parse("android.resources://"+getPackageName()+"/"+R.raw.dog);
Run Code Online (Sandbox Code Playgroud)
还尝试了以下语法: android.resource://[package]/[res type]/[res name]
但是SimpleExoPlayerView
保持黑色,我得到以下错误:
com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to android.resources://lt.wilkas.deleteexoplayer/2131099648
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
构建项目时出现错误
error: cannot find symbol
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
^
symbol: class DefaultHttpDataSourceFactory
location: package com.google.android.exoplayer2.upstream
Run Code Online (Sandbox Code Playgroud)
无法导入 DefaultHttpDataSourceFactory 类。但所有依赖项都已添加。这个问题的解决方案是什么?
这是我的 Gradle 依赖项
plugins {
id 'com.android.application'
}
android {
namespace 'com.example.testiptv'
compileSdk 33
defaultConfig {
applicationId "com.example.testiptv"
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation …
Run Code Online (Sandbox Code Playgroud) 我想在我的Android应用程序中使用自定义媒体控制器,因此查看vidtry代码(http://github.com/commonsguy/vidtry),尤其是Player.java:
样本工作正常.但我希望该示例在应用启动时自动播放固定视频(因此我不想输入URL).我补充说:
@Override
public void onResume() {
super.onResume();
address.setText("/sdcard/mydata/category/1/video_agkkr6me.mp4");
go.setEnabled(true);
onGo.onClick(go);
}
Run Code Online (Sandbox Code Playgroud)
这里奇怪的是,如果我运行应用程序,视频的音频播放但图像不显示.其他一切都很好(进度条等).我无法弄清楚手动点击按钮和程序按钮之间的区别.我查看了代码,并没有看到手动和程序化点击之间可能出现的任何差异.
我检查了是否有任何元素(尤其是表面)可能被隐藏,但事实并非如此.我甚至试过了
surface.setVisibility(View.INVISIBLE);
surface.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)
如果重绘有问题,但没有区别.
当我手动点击go按钮时,视频图像会显示,但不会自动启动.
我正在使用视频视图,并动态播放本地存储的视频。
这是我的设置:
videoView.setMediaController(null);
videoView.setOnCompletionListener(myVideoViewCompletionListener);
videoView.setOnErrorListener(videoOnErrorListener);
Run Code Online (Sandbox Code Playgroud)
以下是功能:
private OnErrorListener videoOnErrorListener = new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.i(PlayActivity.class.getSimpleName(), "Not played");
do_stuff();
return true;
}
};
MediaPlayer.OnCompletionListener myVideoViewCompletionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
do_stuff();
}
};
Run Code Online (Sandbox Code Playgroud)
我也尝试过,mp.release()
但是IllegalStateException
当我想用我的videoview
.
我收到这些错误/警告。知道他们做什么或者他们是否会成为问题吗?
E/Mediaplayer: 错误 (1, -2147483648)
W/Mediaplayer:mediaplayer 因未处理的事件而消失
带媒体播放器:这是 IMEDIA_PLAYER_VIDEO_EXIST
带媒体播放器:这是 IMEDIA_PLAYER_VIDEO_EXIST
带媒体播放器:信息/警告 (3, 0)
奇怪的是:每次 videoview 播放视频时都会出现最后 3 行(不知何故是一个循环)。从第二次开始我只得到第一个。
谢谢!