[Problema] Comparare stringhe

Dark-Vex

Nuovo Utente
19 Ago 2016
2
0
1
36
Ciao,

sto creando una APP Android che effettua una scansione OCR, prima di effettuare la scansione OCR vi è un Fragment con all'interno una Editext e il bottone "scansiona" dove inserire una parola da rilevare/ricercare poi nel testo scansionato.
Per la scansione OCR sono partito da questo tutorial (http://www.codeproject.com/Tips/840623/Android-Character-Recognition).
Arriviamo ora al problema, per passare una stringa da una classe ad un altra se ho ben capito bisogna utilizzare il metodo Bundle e Intent (e fin qui tutto ok), il problema è che la classe Java dove passo la stringa da comparare non fa parte di nessuna activity ed infatti ricevo il seguente errore:

Codice:
  --------- beginning of crash
08-23 12:29:38.580 16872-16872/com.mydomain.mypp E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.mydomain.myapp, PID: 16872
  android.content.ActivityNotFoundException: Unable to find explicit activity class {com.mydomain.myapp/com.mydomain.myapp.TessAsyncEngine}; have you declared this activity in your AndroidManifest.xml?
  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1777)
  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1501)
  at android.app.Activity.startActivityForResult(Activity.java:3745)
  at android.support.v4.app.ActivityCompatJB.startActivityForResult(ActivityCompatJB.java:30)
  at android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:162)
  at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:914)
  at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:1009)
  at android.support.v4.app.Fragment.startActivity(Fragment.java:921)
  at android.support.v4.app.Fragment.startActivity(Fragment.java:910)
  at com.mydomain.myapp.ScanFragment$1.onClick(ScanFragment.java:126)
  at android.view.View.performClick(View.java:4780)
  at android.view.View$PerformClick.run(View.java:19866)
  at android.os.Handler.handleCallback(Handler.java:739)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:135)
  at android.app.ActivityThread.main(ActivityThread.java:5254)
  at java.lang.reflect.Method.invoke(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
08-23 12:29:40.699 16872-16872/com.mydomain.myapp I/Process: Sending signal. PID: 16872 SIG: 9

Vi allego anche le due classi Java

Fragment
Codice:
package com.mydomain.myapp;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.text.Normalizer;

public class ScanFragment extends Fragment {
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    private OnFragmentInteractionListener mListener;

    //Init DB
    private DbManager db=null;
    private CursorAdapter adapter;

    public ScanFragment() {
        // Required empty public constructor
    }

    // TODO: Rename and change types and number of parameters
    public static ScanFragment newInstance(String param1, String param2) {
        ScanFragment fragment = new ScanFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }

        //Inizializzo DB e cursor
        db=new DbManager(getActivity());
        Cursor crs=db.query();

    }

    // TODO: Rename method, update argument and hook method into UI event
    public void onButtonPressed(Uri uri) {
        if (mListener != null) {
            mListener.onFragmentInteraction(uri);
        }
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            mListener = (OnFragmentInteractionListener) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        final View view = inflater.inflate(R.layout. fragment_scan,
                container, false);
        Button button = (Button) view.findViewById(R.id.btn_scansiona);
        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //do something when button is clicked.
                EditText txt=(EditText) view.findViewById(R.id.textSearch);
                EditText date=(EditText) view.findViewById(R.id.textDate);
                //String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

                //Salvo contenuto del testo nel bundle e lo passo a TessAsyncEngine
                Bundle bundle = new Bundle();
                bundle.putString("TextSearch", txt.getText().toString());
                Intent form_intent = new Intent(getActivity(), TessAsyncEngine.class);
                form_intent.putExtras(bundle);
                startActivity(form_intent);


                if (txt.length()>0 && date.length()>0)
                {
                    //Make the insert into DB by calling the method save define in DbManager.java
                    db.save(txt.getEditableText().toString(), date.getEditableText().toString());
                    //Show Toast if the insert is ok
                    Toast.makeText(getActivity(),"Saved Successfully", Toast.LENGTH_LONG).show();
                }

            }
        });
        return view;
    }

}

TessAsync.java
Codice:
public class TessAsyncEngine extends AsyncTask<Object, Void, String> {

    static final String TAG = "DBG_" + TessAsyncEngine.class.getName();

    private Bitmap bmp;

    private Activity context;


    @Override
    protected String doInBackground(Object... params) {

        try {

            if(params.length < 2) {
                Log.e(TAG, "Error passing parameter to execute - missing params");
                return null;
            }

            if(!(params[0] instanceof Activity) || !(params[1] instanceof Bitmap)) {
                Log.e(TAG, "Error passing parameter to execute(context, bitmap)");
                //Log.e(TAG, "Error passing parameter " + params[0].toString() + params[1].toString());
                return null;
            }

            context = (Activity)params[0];

            bmp = (Bitmap)params[1];

            if(context == null || bmp == null) {
                Log.e(TAG, "Error passed null parameter to execute(context, bitmap)");
                return null;
            }

            int rotate = 0;

            if(params.length == 3 && params[2]!= null && params[2] instanceof Integer){
                rotate = (Integer) params[2];
            }

            if(rotate >= -180 && rotate <= 180 && rotate != 0)
            {
                bmp = Tools.preRotateBitmap(bmp, rotate);
                Log.d(TAG, "Rotated OCR bitmap " + rotate + " degrees");
            }

            TessEngine tessEngine =  TessEngine.Generate(context);

            bmp = bmp.copy(Bitmap.Config.ARGB_8888, true);

            String result = tessEngine.detectText(bmp);
            //detect words
            Bundle bundle = context.getIntent().getExtras();
            String txtSearch = bundle.getString("TextSearch");

            if (result.equals(txtSearch)) {
                Log.d(TAG, "I've found "+result);
                String result1 = ("ATTENZIONE! contiene: ") + result.concat(" trovato");
                return result1;
            } else {
                String result2 = ("Ho rilevato la seguente parola: ") + result.concat(" verifica che sia corretta");
                return result2;
            }
            //Log.d(TAG, result);

            //return result;


        } catch (Exception ex) {
            Log.d(TAG, "Error: " + ex + "\n" + ex.getMessage());
        }

        return null;
    }

    @Override
    protected void onPostExecute(String s) {

        if(s == null || bmp == null || context == null)
            return;

        ImageDialog.New()
                .addBitmap(bmp)
                .addTitle(s)
                .show(context.getFragmentManager(), TAG);

        super.onPostExecute(s);
    }
}
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 1

Discussioni simili