- Android - Intents/Filters
- Android - Fragments
- Android - Content Providers
- Android - Broadcast Receivers
- Android - Services
- Android - Activities
- Android - Resources
- Android - Hello World Example
- Android - Application Components
- Android - Architecture
- Android - Environment Setup
- Android - Overview
- Android - Home
Android - User Interface
- Android - Custom Components
- Android - Styles and Themes
- Android - Event Handling
- Android - UI Controls
- Android - UI Layouts
Android Advanced Concepts
- Publishing Android Application
- Android - Phone Calls
- Android - Sending SMS
- Android - Sending Email
- Location Based Services
- Android - Notifications
- Android - Drag and Drop
Android Useful Examples
- Android - XML Parsers
- Android - Widgets
- Android - Wi-Fi
- Android - WebView Layout
- Android - UI Testing
- Android - UI Patterns
- Android - UI Design
- Android - Twitter Integration
- Android - TextureView
- Android - Text to Speech
- Android - Testing
- Android - Support Library
- Android - SQLite Database
- Android - Spelling Checker
- Android - SIP Protocol
- Android - Shared Preferences
- Android - Session Management
- Android - Sensors
- Android - SDK Manager
- Android - Screen Cast
- Android - RSS Reader
- Android - RenderScript
- Android - Push Notification
- Android - ProgressBar
- Android - Progress Circle
- Android - PHP/MySQL
- Android - NFC Guide
- Android - Network Connection
- Android - Navigation
- Android - Multitouch
- Android - MediaPlayer
- Android - Login Screen
- Android - Localization
- Android - Loading Spinner
- Android - Linkedin Integration
- Android - JSON Parser
- Android - JetPlayer
- Android - Internal Storage
- Android - ImageSwitcher
- Android - Image Effects
- Android - Google Maps
- Android - Gestures
- Android - Facebook Integration
- Android - Emulator
- Android - Developer Tools
- Android - Data Backup
- Android - Custom Fonts
- Android - Clipboard
- Android - Camera
- Android - Bluetooth
- Android - Best Practices
- Android - Auto Complete
- Android - AudioManager
- Android - Audio Capture
- Android - Animations
- Android - Alert Dialoges
Android Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Android - TextureView
If you want to display a pve video stream or any content stream such as video or an OpenGL scene, you can use TextureView provided by android in order to do that.
In order to use TextureView, all you need to do is get its SurfaceTexture.The SurfaceTexture can then be used to render content. In order to do this, you just need to do instantiate an object of this class and implement SurfaceTextureListener interface. Its syntax is given below −
private TextureView myTexture; pubpc class MainActivity extends Activity implements SurfaceTextureListener{ protected void onCreate(Bundle savedInstanceState) { myTexture = new TextureView(this); myTexture.setSurfaceTextureListener(this); setContentView(myTexture); } }
After that, what you need to do is to override its methods. The methods are psted as follows −
@Override pubpc void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) { } @Override pubpc boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) { } @Override pubpc void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1,int arg2) { } @Override pubpc void onSurfaceTextureUpdated(SurfaceTexture arg0) { }
Any view that is displayed in the texture view can be rotated and its alpha property can be adjusted by using setAlpha and setRotation methods. Its syntax is given below −
myTexture.setAlpha(1.0f); myTexture.setRotation(90.0f);
Apart from these methods, there are other methods available in TextureView class. They are psted below −
Sr.No | Method & description |
---|---|
1 |
getSurfaceTexture() This method returns the SurfaceTexture used by this view. |
2 |
getBitmap(int width, int height) This method returns Returns a Bitmap representation of the content of the associated surface texture. |
3 |
getTransform(Matrix transform) This method returns the transform associated with this texture view. |
4 |
isOpaque() This method indicates whether this View is opaque. |
5 |
lockCanvas() This method start editing the pixels in the surface |
6 |
setOpaque(boolean opaque) This method indicates whether the content of this TextureView is opaque. |
7 |
setTransform(Matrix transform) This method sets the transform to associate with this texture view. |
8 |
unlockCanvasAndPost(Canvas canvas) This method finish editing pixels in the surface. |
Example
The below example demonstrates the use of TextureView class. It crates a basic apppcation that allows you to view camera inside a texture view and change its angle , orientation e.t.c.
To experiment with this example , you need to run this on an actual device on which camera is present.
Steps | Description |
---|---|
1 | You will use android studio IDE to create an Android apppcation and name it as TextureView under a package com.example.textureview. |
2 | Modify src/MainActivity.java file to add Activity code. |
3 | Modify layout XML file res/layout/activity_main.xml add any GUI component if required. |
5 | Run the apppcation and choose a running android device and install the apppcation on it and verify the results. |
Here is the content of src/com.example.textureview/MainActivity.java.
package com.example.textureview; import java.io.IOException; import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.SurfaceTexture; import android.hardware.Camera; import android.os.Bundle; import android.view.Gravity; import android.view.Menu; import android.view.TextureView; import android.view.TextureView.SurfaceTextureListener; import android.view.View; import android.widget.FrameLayout; pubpc class MainActivity extends Activity implements SurfaceTextureListener { private TextureView myTexture; private Camera mCamera; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myTexture = new TextureView(this); myTexture.setSurfaceTextureListener(this); setContentView(myTexture); } @Override pubpc boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @SuppressLint("NewApi") @Override pubpc void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) { mCamera = Camera.open(); Camera.Size previewSize = mCamera.getParameters().getPreviewSize(); myTexture.setLayoutParams(new FrameLayout.LayoutParams( previewSize.width, previewSize.height, Gravity.CENTER)); try { mCamera.setPreviewTexture(arg0); } catch (IOException t) { } mCamera.startPreview(); myTexture.setAlpha(1.0f); myTexture.setRotation(90.0f); } @Override pubpc boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) { mCamera.stopPreview(); mCamera.release(); return true; } @Override pubpc void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1, int arg2) { // TODO Auto-generated method stub } @Override pubpc void onSurfaceTextureUpdated(SurfaceTexture arg0) { // TODO Auto-generated method stub } }
Here is the content of activity_main.xml
<?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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextureView android:id="@+id/textureView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_apgnParentTop="true" android:layout_centerHorizontal="true" /> </RelativeLayout>
Here is the default content of AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.textureview" > <uses-permission android:name="android.permission.CAMERA"/> <apppcation android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.textureview.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </apppcation> </manifest>
Let s try to run your TextureView apppcation. I assume you have connected your actual Android Mobile device with your computer. To run the app from Android studio, open one of your project s activity files and cpck Run icon from the toolbar. Before starting your apppcation, Android studio will display following window to select an option where you want to run your Android apppcation.
Select your mobile device as an option and then check your mobile device which will display following screen. This screen has alpha property set to 0.5 and rotation set to 45.
This screen has alpha property set to 1.5 and rotation set to 45.
This screen has alpha property set to 1.0 and rotation set to 90.
Advertisements