标签: android-textureview

Android Nougat:TextureView不支持显示背景drawable

我一直在我的Android应用程序中使用TextureView,它工作正常.就在最近,我在Android设备上使用Android API 25(7.1.2)测试了我的代码.相同的代码现在不起作用并抛出错误java.lang.UnsupportedOperationException: TextureView doesn't support displaying a background drawable.

我知道void setBackgroundDrawable (Drawable background)已经被弃用了很长时间,现在它已经被删除了.但我甚至不是自己设定的.

我正在使用最新的buildTools和SDK.所以,我想知道为什么没有更新textureView内部实现.

这是相关的堆栈跟踪:

java.lang.UnsupportedOperationException: TextureView doesn't support displaying a background drawable
at android.view.TextureView.setBackgroundDrawable(TextureView.java:315)
at android.view.View.setBackground(View.java:18124)
at android.view.View.<init>(View.java:4573)
at android.view.View.<init>(View.java:4082)
at android.view.TextureView.<init>(TextureView.java:159)
at com.abdulwasaetariq.xyz.ui.customView.AutoFitTextureView.<init>(AutoFitTextureView.java:24)
at com.abdulwasaetariq.xyz.ui.customView.AutoFitTextureView.<init>(AutoFitTextureView.java:20)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[...]
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

这是我如何使用我的(尚未定制)自定义TextureView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.abdulwasaetariq.xyz.ui.activity.MainActivity">

    <com.abdulwasaetariq.xyz.ui.customView.AutoFitTextureView
        android:id="@+id/texture"
        android:layout_width="1080px"
        android:layout_height="1080px"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是我的相关AutoFitTextureView.java: enter code here

public class AutoFitTextureView extends TextureView {

private …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-textureview android-7.1-nougat

25
推荐指数
2
解决办法
5956
查看次数

在recyclerview中使用textureview播放视频

我正在尝试使用像Vine或Instagram应用程序这样的视频实现列表.当列表项显示或完全可见时,他们播放视频播放的位置,并且当列表项被隐藏时视频暂停.我正在使用带有媒体播放器的textureview从url播放视频,并将其作为listler项目添加到recyclelerview中.以下是我的代码.

VideosAdapter类:

public class VideosAdapter extends RecyclerView.Adapter<VideosAdapter.ViewHolder> {

Context context;
private ArrayList<String> urls;

public static class ViewHolder extends RecyclerView.ViewHolder {

    public LinearLayout layout;
    public TextView textView;

    public ViewHolder(View v) {
        super(v);
        layout = (LinearLayout) v.findViewById(R.id.linearLayout);
        textView = (TextView) v.findViewById(R.id.textView);
    }
}

public VideosAdapter(Context context, ArrayList<String> urls) {
    this.context = context;
    this.urls = urls;
}

// Create new views (invoked by the layout manager)
@Override
public VideosAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    // create a new view
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_main, …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-mediaplayer android-textureview android-recyclerview

19
推荐指数
1
解决办法
2万
查看次数

预览在camera2 apis中延伸

以下是在camera2 apis中使用纹理视图时的屏幕截图.在全屏幕中,预览会拉伸,但在使用较低分辨率(第二张图像)时可以使用.如何在不拉伸的情况下全屏使用此预览.

android screen-resolution android-camera android-textureview android-camera2

15
推荐指数
1
解决办法
1663
查看次数

android textureview全屏预览,正确的宽高比

我一直在使用谷歌camera2 api演示,不幸的是,示例应用程序是为了在屏幕高度的大约70%处显示纹理视图预览,在环顾四周之后,我能够确定这是由AutoFitTextureView覆盖了onMeasure()方法如下图所示:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);
    if (0 == mRatioWidth || 0 == mRatioHeight) {
        setMeasuredDimension(width, height);
    } else {
        if (width < height * mRatioWidth / mRatioHeight) {
            setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
        } else {
            setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试通过设置正确的高度和宽度来纠正这个setMeasuredDimension(width, height);问题,这解决了高度问题,并从纹理视图中给我一个全屏预览,但是在每个设备上宽高比完全被破坏和翘曲,标准的固定方式是什么这个?我看到很多应用程序在Play商店找到了解决这个问题的方法,但还没能找到解决方案,任何帮助都会有很长的路要走,谢谢.

java android android-camera android-textureview android-camera2

13
推荐指数
2
解决办法
5279
查看次数

如何在TextureView和Camera中使用移动视觉API

我正在使用移动视觉API扫描条形码.我正在使用它TextureView来渲染相机.我看了这个github线程https://github.com/googlesamples/android-vision/issues/15看来移动视觉不兼容TextureView

我发现这CameraSourceSurfaceView与之不兼容的TextureView,因为没有预览帧的方法TextureView.https://developers.google.com/android/reference/com/google/android/gms/vision/CameraSource.html#start(android.view.SurfaceHolder)

我尝试使用以下方法并检查receiveDetections未被调用.有谁知道如何将移动视觉API与TextureView和集成Camera.

MainActivity.java

@RuntimePermissions
public class ScanBarcodeActivity extends BaseActivity {

    private TextureView textureView;

    private BarcodeDetector barcodeDetector;

    private Camera camera;

    private String TAG = LogUtils.makeLogTag(ScanBarcodeActivity.class);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityScanBarcodeBinding activityScanBarcodeBinding = setContentView(this, R.layout.activity_scan_barcode);

        textureView = activityScanBarcodeBinding.textureView;

        barcodeDetector = new BarcodeDetector.Builder(this).build();

        ScanBarcodeActivityPermissionsDispatcher.requestCameraPermissionWithCheck(this);

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, …
Run Code Online (Sandbox Code Playgroud)

android android-textureview google-vision android-vision

11
推荐指数
1
解决办法
2508
查看次数

如何确定摄像机预览帧的默认方向?

我正在尝试(再次)创建实际上正常工作的相机预览逻辑,适用于所有场景:

  • 任何设备:手机,平板电脑,烤面包机,等等
  • 任何相机:前向,后向,侧向,面向狗,等等
  • android.hardware.Cameraandroid.hardware.camera2
  • 肖像和风景设备方向

因为我minSdkVersion15岁,因为我并不特别关心表现,所以我试图用一个TextureView.并且,根据fadden在这里这里的地方的建议,我试图setTransform()TextureView适当的情况下使用Matrix它:

  • 正确定位预览,考虑设备方向
  • TextureView完全填充,以TextureView纵横比与预览帧宽高比不匹配的裁剪为代价
  • 不会拉伸图像,因此预览正方形项目(例如,3"方形Post-ItNote®)会在预览中显示正方形

在我的情况下,TextureView填充屏幕,减去状态栏和导航栏.

adjustAspectRatio()GrafikaPlayMovieActivity.java开始,我现在有:

  private void adjustAspectRatio(int videoWidth, int videoHeight,
                                 int rotation) {
    if (iCanHazPhone) {
      int temp=videoWidth;
      videoWidth=videoHeight;
      videoHeight=temp;
    }

    int viewWidth=getWidth();
    int viewHeight=getHeight();
    double aspectRatio=(double)videoHeight/(double)videoWidth;
    int newWidth, newHeight;

    if (getHeight()>(int)(viewWidth*aspectRatio)) {
      newWidth=(int)(viewHeight/aspectRatio);
      newHeight=viewHeight;
    }
    else {
      newWidth=viewWidth;
      newHeight=(int)(viewWidth*aspectRatio);
    }

    int xoff=(viewWidth-newWidth)/2;
    int yoff=(viewHeight-newHeight)/2;

    Matrix …
Run Code Online (Sandbox Code Playgroud)

android android-camera textureview android-textureview

9
推荐指数
1
解决办法
4653
查看次数

当listitem在recyclerview中可见时播放/暂停视频

我已经实现了一个recyclerview,我在其中添加纹理视图作为列表项来播放来自url的视频.现在像藤蔓和Instagram应用程序我想播放视频,当它在recyclerview中可见,并在listitem离开屏幕时停止/暂停视频.以下是我的代码:

VideosAdapter类:

public class VideosAdapter extends RecyclerView.Adapter<VideosAdapter.ViewHolder> {

private static String TAG = "VideosAdapter";

Context context;
private ArrayList<String> urls;
RecyclerView recyclerView;

public static class ViewHolder extends RecyclerView.ViewHolder {

    public TextureView textureView;
    public TextView textView;

    public ViewHolder(View v) {
        super(v);
        textureView = (TextureView) v.findViewById(R.id.textureView);
        textView = (TextView) v.findViewById(R.id.textView);

    }
}

public VideosAdapter(Context context, RecyclerView recyclerView, final ArrayList<String> urls) {

    this.context = context;
    this.recyclerView = recyclerView;
    this.urls = urls;

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) { …
Run Code Online (Sandbox Code Playgroud)

android-scrollview android-textureview android-recyclerview onscrollchanged

8
推荐指数
1
解决办法
1628
查看次数

在 RecyclerView 中播放视频 - 滚动屏幕时播放/暂停视频

我已经实现了使用纹理视图和媒体播放器实现的视频播放器的回收器视图。

如果我向下滚动列表,我可以单击该项目并播放视频。但是,对于回收器视图,一旦视图离开屏幕,它就会被回收以供重用。如果我向上滚动,所有视图现在都是空白(黑色)。

我希望添加功能,当用户将视频滚动到屏幕外时,它将暂停并保持对该视频的引用,以便如果他们滚动回该视频,它将从该点开始播放。

我已签这个了,但是我不想下载的视频,我只是想流。我不是在找人为我做这件事,我只是在寻找一些指示,并希望有人可以分享他们的知识......在此先感谢

这是我到目前为止所做的:

视频播放器

public class CustomVideoPlayer implements TextureView.SurfaceTextureListener, VideoControllerView.MediaPlayerControl, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnPreparedListener, MediaPlayer.OnVideoSizeChangedListener {

    private Context mContext;
    private String mUrl;
    private MediaPlayer mMediaPlayer;
    private Surface mSurface;
    private VideoControllerView mControllerView;

    private TextureView mTextureView;
    private CardView mCardView;
    private ProgressBar mProgress;
    private FrameLayout mView;
    private RelativeLayout mLayout;


    public CustomVideoPlayer(Context ctx, TextureView view, ProgressBar progressDialog, FrameLayout holderView){

        this.mContext = ctx;
        mTextureView = view;
        mTextureView.setSurfaceTextureListener(this);
        mProgress = progressDialog;
        mControllerView = new VideoControllerView(ctx);
        mView = holderView;

        mTextureView.setOnTouchListener(new ControlTouchListener());
    }


    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

android android-mediaplayer textureview android-textureview android-recyclerview

7
推荐指数
2
解决办法
2万
查看次数

如何使用纹理视图而不是表面视图从相机直播视频?

我看过很多关于如何使用 Surfaceview 将视频从 android 相机实时流式传输到 rtmp 服务器的示例。一个在这里:https : //github.com/begeekmyfriend/yasea

但是是否可以使用纹理视图将视频从相机流式传输到 rtmp?如果是,我们怎么办?

Textureview mTextureView;

// inside oncreate

mTextureView = (TextureView) findViewById(R.id.texture_view);
mTextureView.setSurfaceTextureListener(AircraftControlActivity.this);



// Outside OnCreate
@Override
public void onSurfaceTextureAvailable(final SurfaceTexture surface, final int width, final int height) {

}

@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {

}

@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {

}


@Override
public void onSurfaceTextureUpdated(final SurfaceTexture surface) {

}
Run Code Online (Sandbox Code Playgroud)

接下来做什么?

android rtmp live-streaming textureview android-textureview

5
推荐指数
1
解决办法
1090
查看次数

TextureView与透明度

是否可以使用具有透明度的TextureView,以便可以看到它下面的视图(z顺序)?

TextureView的IOW部分是透明的,而TextureView位于顶部的视图通过显示.

android android-textureview

4
推荐指数
1
解决办法
2958
查看次数