Based on this example android-Camera2Basic
I applied some changes, and this is the result:
Camera2BasicFragmentFront.java
A source
Camera2BasicFragment.java
A source
AutoFitTextureView.java
A source
fragment_camera2_basic.xml (be sure to replace com.YourPackage.AutoFitTextureView)
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.YourPackage.AutoFitTextureView android:id="@+id/texture" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentTop="true" /> </RelativeLayout>
activity_main.xml
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> <FrameLayout android:id="@+id/containerFront" android:layout_width="200dp" android:layout_height="200dp" /> </RelativeLayout>
Than in MainActivity.java:
public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (null == savedInstanceState) { getFragmentManager().beginTransaction() .replace(R.id.container, Camera2BasicFragment.newInstance()) .commit(); getFragmentManager().beginTransaction() .replace(R.id.containerFront, Camera2BasicFragmentFront.newInstance()) .commit(); } } }
And use this permission for Manifest.xml
<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />
I like it all!
PS Java classes also contain a method for saving photos!
source share