如何将Google语音语音识别更改为单独的字符串?

时间:2019-06-09 12:23:22

标签: java android speech-recognition

您好朋友,我是android中的新手,其中使用了Google语音识别      我的项目我想将字符串更改为其他字符串,例如用户      是说这个“创世记第一章第一节”现在我想打破这个      以这种方式将字符串更改为b = 1,将章更改为      c = 1且经节变成v = 1怎么可能,请帮忙      我用于此目的的逻辑

如果需要我的代码,否则我只需要简单的逻辑

package bible.swordof.God;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import es.dmoral.toasty.Toasty;

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, SearchView.OnQueryTextListener {
    private ListView listView;
    private ArrayList<String> books;
    private ArrayList<String> bookid;
    private ListViewAdapter adapter;
    private DatabaseHelper mDBHelper = null;
    private SQLiteDatabase mDb = null;
    BookRecyclerAdopter bookRecyclerAdopter;

//life is awesome

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        setData();
        RecyclerView bookanme = findViewById(R.id.list);
        bookanme.setLayoutManager(new LinearLayoutManager(this));

        bookanme.addItemDecoration(new DividerItemDecoration(bookanme.getContext(), DividerItemDecoration.VERTICAL));
        bookRecyclerAdopter = new BookRecyclerAdopter(this, books);


        bookanme.setAdapter(bookRecyclerAdopter);



        /*    adapter = new ListViewAdapter(MainActivity.this, R.layout.item_listview, books, bookid);
        listView.setAdapter(adapter);*/


    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case R.id.search_voice_btn:
                Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
                if (intent.resolveActivity(getPackageManager()) != null) {
                    startActivityForResult(intent, 10);
                } else {
                    Toast.makeText(this, "Your Device Don't Support Speech Input", Toast.LENGTH_SHORT).show();
                }


                break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
            case 10:
                if (resultCode == RESULT_OK && data != null) {

                    ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);


                    Toast.makeText(this, "" + result.get(0), Toast.LENGTH_SHORT).show();

                    if(result.get(0).toLowerCase().contains("genesis")){

                        Toast.makeText(this, "TRUE", Toast.LENGTH_SHORT).show();


                    }


                }
                break;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);

        MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(myActionMenuItem);

        searchView.setOnQueryTextListener(this);

        return true;
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        Fragment fragment;
        int id = item.getItemId();


        if (id == R.id.home) {

            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);

        } else if (id == R.id.favoruite) {
            Intent intent = new Intent(this, Favourite.class);

            startActivity(intent);
        } else if (id == R.id.nav_manage) {

        } else if (id == R.id.nav_share) {

        } else if (id == R.id.nav_send) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

    private void setData() {


        books = new ArrayList<>();


        mDBHelper = new DatabaseHelper(this);
        mDb = mDBHelper.getReadableDatabase();

        Cursor cursor = mDb.rawQuery("select b,n from key_english", new String[]{});


        if (cursor != null && cursor.getCount() > 0) {
            if (cursor.moveToFirst()) {
                do {
                    books.add(cursor.getString(1));

                } while (cursor.moveToNext());
            }
        }
    }


    @Override
    public boolean onQueryTextSubmit(String s) {
        return false;

    }

    @Override
    public boolean onQueryTextChange(String newtext) {

        String userinput = newtext.toLowerCase();
        List<String> newlist = new ArrayList<>();
        for (String name : books) {

            if (name.toLowerCase().contains(userinput)) {

                newlist.add(name);


            }
        }



        bookRecyclerAdopter.updatelist(newlist);
        return true;

    }

}

0 个答案:

没有答案