在Android TextureView的文档中,它说你可以使用TextureView来播放视频:但我似乎无法找到任何如何做到这一点的例子.有人知道吗?
我需要使用a,textureView因为我想为视频制作动画.我想播放.3gp/.mp4格式的视频,而不是来自相机的视频:)
任何帮助,将不胜感激..
更新:
解决方案是作为社区维基解答发布的
首先,我正在编写一个根应用程序,因此root权限不成问题.我搜索过并搜索过,发现很多代码对我来说从来没有用过,这是我到目前为止拼凑起来的东西.当我说sorta我的意思是它在我的/sdcard/test.png上生成一个图像但是该文件是0字节,显然无法查看.
public class ScreenShot extends Activity{
View content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blank);
content = findViewById(R.id.blankview);
getScreen();
}
private void getScreen(){
Bitmap bitmap = content.getDrawingCache();
File file = new File("/sdcard/test.png");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何有关如何通过代码在Android屏幕截图拍摄的帮助将非常感谢谢谢!
===编辑===
以下是我正在使用的所有图像是在我的SD卡上制作的,不再是0bytes但是整个东西都是黑色的,上面没有任何内容.我已将活动绑定到我的搜索按钮,所以当我在手机上的某个地方时,我长按搜索,它应该拍摄屏幕截图但我只是得到一个黑色图像?一切都设置透明,所以我认为它应该抓住屏幕上的任何东西,但我只是一直变黑
表现
<activity android:name=".extras.ScreenShot"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.SEARCH_LONG_PRESS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent" …Run Code Online (Sandbox Code Playgroud) 所以我试图做一个VideoView的屏幕截图.我认为最简单的方法是:
videoView.setDrawingCacheEnabled(true);
Run Code Online (Sandbox Code Playgroud)
然后我需要截取屏幕截图:
Bitmap screenshot = videoView.getDrawingCache();
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我回来的位图每次都只是黑色.任何人都有这个成功吗?我也尝试过:
Bitmap bitmap = Bitmap.createBitmap(videoView.getWidth(), videoView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
videoView.draw(canvas);
Run Code Online (Sandbox Code Playgroud)
但是再次,这给我一个黑色的图像.我可以看到VideoView几乎没有记录在Android javadocs中.有帮助吗?
我需要获取一个视频文件的框架(它可能在sdcard,cache dir或app dir上).我在我的应用程序中有android.media包,我有类MediaMetadataRetriever.要将第一帧放入位图,我使用代码:
public static Bitmap getVideoFrame(Context context, Uri videoUri) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setMode(MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY);
retriever.setDataSource(context, videoUri);
return retriever.captureFrame();
} catch (IllegalArgumentException ex) {
throw new RuntimeException();
} catch (RuntimeException ex) {
throw new RuntimeException();
} finally {
retriever.release();
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.当我设置数据源时,它抛出异常(java.lang.RuntimeException:setDataSource failed:status = 0x80000000).你知道怎么让这段代码工作吗?或者你有没有使用ffmpeg或其他外部库的类似(简单)解决方案?videoUri是一个有效的uri(媒体播放器可以播放来自该URI的视频)