GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Skip to content. This repository has been archived by the owner. It is now read-only. Permalink Dismiss Join GitHub today GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign up. Branch: master. Find file Copy path. Cannot retrieve contributors at this time. Raw Blame History. IOException ; import android. ActionBar ; import android. Activity ; import android. Intent ; import android. SurfaceTexture ; import android. Camera ; import android.
CameraInfo ; import android. SensorManager ; import android. Bundle ; import android. Log ; import android. Pair ; import android. Menu ; import android. MenuItem ; import android.
OrientationEventListener ; import android. Surface ; import android. TextureView ; import android. SurfaceTextureListener ; import android. FrameLayout ; import com. AdRequest ; import com. AdSize ; import com.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. IOException. ActionBar. Activity. Intent .It would be helpful for you if you already know about TextView Widget.
TextureView Kotlin Source Code. Then, surfaceTexture can be used to render the content. You can use getSurfaceTexture or TextureView. SurfaceTextureListener to get the surfaceTexture.
Understanding Camera2 API from callbacks (Part 1)
Please note that surfaceTexture is available only after textureView is attached to window. So, it is advisable to use listener to be notified when surfaceTexture is available. Also, only one producer can use textureView. So, you are using textureView for camera preview, you can not use lockCanvas to draw onto textureView at same time.
At first, we will create android application. Then, we will use textureView using kotlin in the application. Follow steps below to create new project. Please ignore the steps if you have already created the project. Since we have a project now, we will modify xml and other files to use textureView using kotlin in the application.
We have added textView that will be used to display message if necessary. You need to add camera permission for this app because you must have access to camera of the device for this application to work. So, add below code in AndroidManifest. Then, add below code into it. As you can see, we have written code to get camera permission at runtime.
We will setup textureView only if permission is granted. Otherwise, we will show some message to the user.We're about to create an activity Camera2Activity. SurfaceTextureListener handles several lifecycle events on a TextureView. In this case, we're listening to those events. When the SurfaceTexture is ready, we initialize the camera. When it size changes, we setup the preview coming from the camera accordingly.
A CameraDevice represent one physical device's camera. In this attribute, we save the ID of the current CameraDevice. This is the view TextureView that we'll be using to "draw" the preview of the Camera. StateCallback is called when CameraDevice changes its state.
Given choices of Size s supported by a camera, choose the smallest one that is at least at large as the respective texture view size, and that is as most as large as the respective max size, and whose aspect ratio matches with the specified value.
If doesn't exist, choose the largest one that is at most as large as the respective max size, and whose aspect ratio matches with the specified value. This method congfigures the neccesary Matrix transformation to mTextureView.
What is use in Android? Android Preview the main camera in a TextureView. Example In this case, building against API 23, so permissions are handled too. When it size changes, we setup the preview coming from the camera accordingly private final TextureView. We start camera preview here. Builder for the camera preview private CaptureRequest. Builder with the output Surface. Builder Camera2Activity.GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
If nothing happens, download GitHub Desktop and try again. If nothing happens, download Xcode and try again. If nothing happens, download the GitHub extension for Visual Studio and try again. Check out shadercam-example here for basic usage. This means some things have changed but compatibility across devices has improved. See below for a guide on upgrading. All previous classes and methods are still available, so the new API is non-breaking, but includes no fixes for pre Changed from v1.
This is more in line with OpenGL renderer lifecycle patterns. Once the VideoFragment has been provided a renderer a default one is provided in the case where you do not provide a custom oneand a RecordableSurfaceView to render onto, it can then be added to the activity and brought to life for viewing the camera feed. For example, in this implementation of onResume, we make sure that RecordableSurfaceView has a handle to a file that it has permissions to write a movie file to:.
Note that phones with Notches may behave differently based on the underlying system's implementation, for example, the outputs of getRealSize vs. Renderer pattern. If you make something cool with shadercam, let us know by heading over to Android Experiments and submitting your experiment! Report any issues here - we love pull requests! Skip to content. Dismiss Join GitHub today GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign up. Java GLSL. Java Branch: master.
I am trying to render camera preview using SurfaceTexture. I read the document but unable to understand how it works. Can anyone provide one sample example very basic one or link which uses SurfaceTexture to preview camera.
I googled this but not found what I am looking for. You'll have to implement 4 methods:. Two more things: Don't forget to add the camera permissions in your project's manifest and the SurfaceTexture is available from API Learn more. Asked 7 years, 9 months ago. Active 6 years, 7 months ago. Viewed 37k times. Thanks in advance. AndroDev AndroDev 2, 6 6 gold badges 30 30 silver badges 47 47 bronze badges.
Active Oldest Votes. LayoutParams previewSize. Could you please guide me on using this in service? Rhth, what do you mean by using this is service? Rhth, I suggest you to post your question on StackOverflow instead of asking it in the comments. This was exceptionally helpful, thank you! Kamal Kamal 1, 12 12 silver badges 23 23 bronze badges. Thank you for your answer but this is not what I am looking for. This example is already available in api demos.
I want to do the same thing using SurfaceTexture. Sign up or log in Sign up using Google. Sign up using Facebook. Sign up using Email and Password. Post as a guest Name. Email Required, but never shown. The Overflow Blog. Featured on Meta.
The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. See e. This approach will get you much better performance than manipulating pixels with the NDK, because the GPU does all the work. Camera is a shared hardware resource.
I don't think you can access it Camera. How about accessing the buffers for camera preview natively and then reading bytes from those buffers to render them on as many TextureView s or SurfaceView s or VideoView s as you wish? Learn more.
Asked 6 years, 6 months ago. Active 5 years, 4 months ago. Viewed 4k times. I can display a preview of the camera video properly with a TextureView: package com. IOException; import android. Activity; import android. SurfaceTexture; import android. Camera; import android.
Android - TextureView
Bundle; import android. Log; import android. Gravity; import android. TextureView; import android. SurfaceTextureListener; import android. LayoutParams previewSize.
SurfaceHolder; import android. SurfaceView; import android. Size getBestPreviewSize int width, int height, Camera. Size size : parameters. FrameLayout; import android. Is there anything I can do to get these both displaying at the same time? David Doria David Doria 8, 12 12 gold badges 68 68 silver badges bronze badges. Active Oldest Votes.
What do you mean "access the buffers natively"? I mean using NDK to access the frame buffers directly.The TextureView class is a view that uses hardware-accelerated 2D rendering to enable a video or OpenGL content stream to be displayed. For example, the following screenshot shows the TextureView displaying a live feed from the device's camera:.
Unlike the SurfaceView class, which can also be used to display OpenGL or video content, the TextureView is not rendered into a separate window. Therefore, TextureView is able to support view transformations like any other view. For example, rotating a TextureView can be accomplished by simply setting its Rotation property, its transparency by setting its Alpha property, and so on.
Therefore, with the TextureView we can now do things like display a live stream from the camera and transform it, as shown in the following code:. ISurfaceTextureListener interface.
In this method, we take the SurfaceTexture that is passed in and set it to the camera's preview texture. Then we are free to perform normal view-based operations, such as setting the Rotation and Alphaas in the example above.
The resulting application, running on a device, is shown below:. Also, since this example uses the camera, both the android. You may also leave feedback directly on GitHub. Skip to main content. Exit focus mode. For example, the following screenshot shows the TextureView displaying a live feed from the device's camera: Unlike the SurfaceView class, which can also be used to display OpenGL or video content, the TextureView is not rendered into a separate window.
Therefore, with the TextureView we can now do things like display a live stream from the camera and transform it, as shown in the following code: public class TextureViewActivity : Activity, TextureView.
LayoutParams previewSize. Width, previewSize. Height, int GravityFlags. WriteLine ex. The resulting application, running on a device, is shown below: To use the TextureViewhardware acceleration must be enabled, which it will be by default as of API Level Yes No. Any additional feedback? Skip Submit. Send feedback about This product This page. This page. Submit feedback. There are no open issues.
View on GitHub. Is this page helpful?