Here sharing Android updated Api Features for Optical character recognition(OCR). with using Camera pictures able to read character for it and can share that read Character to other apps.
To create Application in Android studio follow below steps
AndroidManifest.xml
build.gradle
activity_main.xml
Here we also use Button to share character to other apps.
To create Application in Android studio follow below steps
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="yourpackageName">
<uses-permission android:name="android.permission.CAMERA"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.google.android.gms.vision.DEPENDENCIES"
android:value="ocr"/> </application> </manifest>
build.gradle
dependencies {
compile 'com.google.android.gms:play-services-vision:11.0.4'}
activity_main.xml
Here we also use Button to share character to other apps.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:weightSum="5"
tools:context="Yourpackage.MainActivity">
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4" />
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="8dp"
android:layout_weight="1"
android:gravity="center"
android:textStyle="bold"
android:background="@drawable/mboarder"
android:text="@string/txt_message"
android:textColor="@android:color/black"
android:textSize="20sp" />
<Button
android:id="@+id/btnShare"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Share"
android:textAllCaps="false"
android:background="@color/colorAccent"
android:layout_marginBottom="5dp"
android:textColor="@android:color/white"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
MainActivity.java
package your.packageNamehere; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.util.SparseArray; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.google.android.gms.vision.CameraSource; import com.google.android.gms.vision.Detector; import com.google.android.gms.vision.text.TextBlock; import com.google.android.gms.vision.text.TextRecognizer; import java.io.IOException; public class MainActivity extends AppCompatActivity { SurfaceView mCameraView; TextView mTextView; CameraSource mCameraSource; private static final String TAG = "MainActivity"; private static final int requestPermissionID = 101; Button btnShare; String ReadString; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mCameraView = findViewById(R.id.surfaceView); mTextView = findViewById(R.id.text_view); btnShare = findViewById(R.id.btnShare); btnShare.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT,ReadString); sendIntent.setType("text/plain"); startActivity(sendIntent); } }); startCameraRead(); } @Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode != requestPermissionID) { Log.d(TAG, "Got permission result" + requestCode); super.onRequestPermissionsResult(requestCode, permissions, grantResults); return; } if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { try { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { return; } mCameraSource.start(mCameraView.getHolder()); } catch (IOException e) { e.printStackTrace(); } } } private void startCameraRead() { final TextRecognizer ReadText = new TextRecognizer.Builder(getApplicationContext()).build();if (!ReadText.isOperational()) { Log.w(TAG, "Detector yet not allow "); } else {mCameraSource = new CameraSource.Builder(getApplicationContext(), ReadText) .setFacing(CameraSource.CAMERA_FACING_BACK) .setRequestedPreviewSize(1280, 1024) .setAutoFocusEnabled(true) .setRequestedFps(2.0f) .build();mCameraView.getHolder().addCallback(new SurfaceHolder.Callback() {@Override public void surfaceCreated(SurfaceHolder holder) { try { if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, requestPermissionID); return; } mCameraSource.start(mCameraView.getHolder()); } catch (IOException e) { e.printStackTrace(); } } @Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Overridepublic void surfaceDestroyed(SurfaceHolder holder) { mCameraSource.stop(); } }); ReadText.setProcessor(new Detector.Processor<TextBlock>() {@Overridepublic void release() { } @Overridepublic void receiveDetections(Detector.Detections<TextBlock> detections) { final SparseArray<TextBlock> items = detections.getDetectedItems(); if (items.size() != 0 ){ mTextView.post(new Runnable() { @Override public void run() { StringBuilder stringBuilder = new StringBuilder(); for(int i=0;i<items.size();i++){ TextBlock item = items.valueAt(i); stringBuilder.append(item.getValue()); stringBuilder.append("\n"); } mTextView.setText(stringBuilder.toString()); ReadString = stringBuilder.toString(); } }); } } }); } } }
No comments:
Post a Comment
Comments