语音播放翻译

public class UnknownWordActivity extends AppCompatActivity {
    ArrayList<String> unknownWordData;
    ArrayList<JSONObject> unknownWordJsonData;
    ListView unknownListView;

    @Override
    protected void onPostResume()
    {
        super.onPostResume();
        getDelegate().onPostResume();
        unknownWordData=new ArrayList<>();
        unknownWordJsonData=new ArrayList<>();
        SharedPreferences h=getSharedPreferences("data",MODE_PRIVATE);
        try
        {
            JSONArray jsonArray = new JSONArray(h.getString("unknownWordTag", "[]"));
            for (int i = 0; i < jsonArray.length(); i++)
            {
                JSONObject o=jsonArray.getJSONObject(i);
                unknownWordJsonData.add(o);
                unknownWordData.add(o.getString("wordName"));
            }
            wordListAdapter ad=new wordListAdapter(UnknownWordActivity.this, R.layout.historylistlayout,unknownWordData);
            unknownListView.setAdapter(ad);
        }
        catch (JSONException ex)
        {
            ex.printStackTrace();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_unkonw_word);
        unknownListView=(ListView)findViewById(R.id.unknownWordListView);
        unknownListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                try
                {
                    Word word= new Word();
                    JSONObject contentJson = unknownWordJsonData.get(position);
                    int status = contentJson.getInt("status");
                    word.setStatus(status);
                    if (status==1)
                    {
                        word.setOut(contentJson.getString("out"));
                    }
                    else
                    {
                        JSONArray wordMeanJsonArray = new JSONArray(contentJson.getString("wordMean"));
                        List<String> wordMeanList=new ArrayList<>();
                        for (int i=0;i<wordMeanJsonArray.length();i++)
                        {
                            wordMeanList.add(wordMeanJsonArray.getString(i));
                        }
                        word.setWordMean(wordMeanList);
                        word.setPhTtsMp3(contentJson.getString("phTtsMp3"));
                    }
                    word.setWordName(unknownWordData.get(position));
                    Intent intent = new Intent();
                    intent.setClass(UnknownWordActivity.this, vocabularyActivity.class);
                    Bundle bundle=new Bundle();
                    bundle.putSerializable("word",word);
                    intent.putExtras(bundle);
                    UnknownWordActivity.this.startActivity(intent);
                }
                catch (JSONException e)
                {
                    e.printStackTrace();
                }
            }
        });
    }
}

 

 

-------------------------------------------

 

 

public class vocabularyActivity extends AppCompatActivity {
    static String unknownWordTag="unknownWordTag";
    int state;
    private Word word;
    private TextView wordTextView;
    private TextView meanTextView;
    private Button soundButton;
    private MediaPlayer mediaPlayer;
    Button addOrRemoveWordButton;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vocabulary);
        wordTextView=(TextView)findViewById(R.id.wordTextView);
        meanTextView=(TextView)findViewById(R.id.meanTextView);
        soundButton=(Button) findViewById(R.id.soundButton);
        mediaPlayer = new MediaPlayer();
        addOrRemoveWordButton=(Button)findViewById(R.id.addOrRemoveWordButton);
        setUp();
        setAddOrRemoveWordButton();
    }

    void setAddOrRemoveWordButton()
    {
        SharedPreferences h=getSharedPreferences("data",MODE_PRIVATE);
        try {
            JSONArray jsonArray = new JSONArray(h.getString(unknownWordTag, "[]"));
            for (int i = 0; i < jsonArray.length(); i++)
            {
                JSONObject JO=jsonArray.getJSONObject(i);
                String wordName=JO.getString("wordName");
                if (wordName.equals(word.getWordName()))
                {
                    addOrRemoveWordButton.setText("从生词本中移除");
                    state=1;
                }
                else
                {
                    addOrRemoveWordButton.setText("加入生词本");
                    state=0;
                }
            }
        }
        catch (JSONException ex)
        {
            ex.printStackTrace();
        }

        addOrRemoveWordButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                SharedPreferences h=getSharedPreferences("data",MODE_PRIVATE);
                SharedPreferences.Editor e=h.edit();
                try {
                    JSONObject o = new JSONObject();
                    o.put("status", word.getStatus());
                    if (word.getStatus() == 1) {
                        o.put("wordName", word.getWordName());
                        o.put("out", word.getOut());
                    } else {
                        o.put("wordName", word.getWordName());
                        o.put("phTtsMp3", word.getPhTtsMp3());
                        JSONArray a = new JSONArray(word.getWordMean());
                        o.put("wordMean", a.toString());
                    }

                    JSONArray jsonArray = new JSONArray(h.getString(unknownWordTag,"[]"));
                    if (state==0)
                    {
                        jsonArray.put(o);
                        e.putString(unknownWordTag,jsonArray.toString());
                        addOrRemoveWordButton.setText("从生词本中移除");
                        state=1;
                    }
                    else
                    {
                        for (int i=0;i<jsonArray.length();i++)
                        {
                            JSONObject p=jsonArray.getJSONObject(i);
                            if ( p.getString("wordName").equals(word.getWordName()))
                            {
                                jsonArray.remove(i);
                                break;
                            }
                        }
                        e.putString(unknownWordTag,jsonArray.toString());
                        addOrRemoveWordButton.setText("加入生词本");
                        state=0;
                    }
                    e.commit();
                }catch (JSONException ex)
                {
                    ex.printStackTrace();
                }
            }
        });
    }

    void setUp()
    {
        word = (Word) getIntent().getSerializableExtra("word");
        wordTextView.setText(word.getWordName());
        try
        {
            if (word.getStatus()==0)
            {
                List<String> meanList=word.getWordMean();
                String meanText="";
                for (int i=0;i<meanList.size();i++)
                {
                    meanText+=meanList.get(i)+"\n";
                }
                meanTextView.setText(meanText);
                if (isNetworkConnected(vocabularyActivity.this.getApplicationContext()))
                {
                    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mediaPlayer.setDataSource(word.getPhTtsMp3());
                    mediaPlayer.prepare();
                    soundButton.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v)
                        {
                            if (!mediaPlayer.isPlaying())
                            {
                                mediaPlayer.start();
                            }

                        }
                    });
                }
                else
                {
                    soundButton.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v)
                        {
                            Toast.makeText(vocabularyActivity.this,"当前网络不可用",0).show();
                        }
                    });
                }
            }
            else
            {
                soundButton.setAlpha(0);
                String out=word.getOut();
                out=out.replace("<br/>","");
                if (out.equals(word.getWordName()))
                {
                    meanTextView.setText("没有该词的解释");
                }
                else
                {
                    meanTextView.setText(out);
                }
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    public boolean isNetworkConnected(Context context)
    {
        if (context != null) {
            ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
            if (mNetworkInfo != null) {
                return mNetworkInfo.isAvailable();
            }
        }
        return false;
    }
}

 

 

--------------------------------------------------------------

 

public class wordListAdapter extends ArrayAdapter<String>
{

    private int resourceID;
    public wordListAdapter(Context context, int resource , List<String> objects)
    {
        super(context, resource,objects);
        resourceID=resource;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        String HistoryWord=getItem(position);
        View view= LayoutInflater.from(getContext()).inflate(resourceID,null);
        TextView wordName=(TextView)view.findViewById(R.id.wordListTextView);
        wordName.setText(HistoryWord);
        return view;
    }

}

 

----------------------------------------------------------

import com.victor.loading.rotate.RotateLoading;
public class MainActivity extends AppCompatActivity
{
    static String searchHistoryTag;
    ArrayList<String> historyData;
    ListView historyListView;
    EditText searchEditText;
    Button searchButton;
    RotateLoading loading;


    @Override
    protected void onStart() {
        super.onStart();
        getDelegate().onStart();
        loadSearchWord();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loading= findViewById(R.id.rotateloading);
        historyData=new ArrayList<>();
        searchEditText=(EditText)findViewById(R.id.searchEditText);
        historyListView=(ListView)findViewById(R.id.historyListView);
        searchButton=(Button)findViewById(R.id.searchButton);
        historyListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                searchEditText.setText(historyData.get(position));
                if (isNetworkConnected(MainActivity.this.getApplicationContext()))
                {
                    loading.start();
                    new Thread(networkTask).start();
                }
                else
                {
                    Toast.makeText(MainActivity.this,"当前网络不可用",0).show();
                }
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    public void search(View view)
    {
        if (isNetworkConnected(MainActivity.this.getApplicationContext()))
        {
            historyListView.setClickable(false);
            searchButton.setClickable(false);
            String w=searchEditText.getText().toString().replace(" ","");
            if (!w.equals(""))
            {
                new Thread(networkTask).start();
                loading.start();
            }
        }
        else
        {
            Toast.makeText(MainActivity.this,"当前网络不可用",0).show();
        }
    }


    Runnable networkTask = new Runnable() {
        @Override
        public void run()
        {
            postSearch();
        }
    };

    private void postSearch()
    {
        BufferedReader reader = null;
        StringBuffer sbf = new StringBuffer();
        try {
            String wordName=searchEditText.getText()+"";
            URL url = new URL("http://fy.iciba.com/ajax.php?a=fy");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(5000);
            connection.setRequestMethod("POST");
            String data = "f=auto&t=auto&w="+wordName;
            connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            connection.setDoOutput(true);
            OutputStream outputStream = connection.getOutputStream();
            outputStream.write(data.getBytes());
            int responseCode = connection.getResponseCode();
            if(responseCode ==200){
                InputStream is = connection.getInputStream();
                reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                String strRead = null;
                while ((strRead = reader.readLine()) != null) {
                    sbf.append(strRead);
                    sbf.append("\r\n");
                }
                reader.close();
                Word word=jsonDecode(sbf.toString(),wordName);
                recordSearchWord(wordName);
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, vocabularyActivity.class);
                Bundle bundle=new Bundle();
                bundle.putSerializable("word",word);
                intent.putExtras(bundle);
                MainActivity.this.startActivity(intent);
            }
            else
            {
                mHandler.sendEmptyMessage(1);
                return;
            }
        } catch (MalformedURLException e)
        {
            e.printStackTrace();
        } catch (ProtocolException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
        mHandler.sendEmptyMessage(0);
    }

    private Handler mHandler = new Handler() {
        public void handleMessage (Message msg) {//此方法在ui线程运行
            switch(msg.what)
            {
                case 0:
                    loading.stop();
                    searchButton.setClickable(true);
                    historyListView.setClickable(true);
                    break;
                case 1:
                    Toast.makeText(MainActivity.this,"无法搜索",0).show();
                    break;
            }
        }
    };


    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId()) {
            case R.id.UnknownWord:
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, UnknownWordActivity.class);
                MainActivity.this.startActivity(intent);
                break;
            case R.id.clearHistory:
                SharedPreferences h=getSharedPreferences("data",MODE_PRIVATE);
                SharedPreferences.Editor e=h.edit();
                e.remove(searchHistoryTag);
                e.commit();
                loadSearchWord();
                break;
        }

        return true;
    }

    private Word jsonDecode(String json,String wordName)
    {
        Word word = new Word();
        try {
            JSONObject jsonObject = new JSONObject(json);
            int status = jsonObject.getInt("status");
            JSONObject contentJson = jsonObject.getJSONObject("content");
            word.setStatus(status);
            if (status==1)
            {
                word.setOut(contentJson.getString("out"));
            }
            else
            {
                JSONArray wordMeanJsonArray = contentJson.getJSONArray("word_mean");
                List<String> wordMeanList=new ArrayList<>();
                for (int i=0;i<wordMeanJsonArray.length();i++)
                {
                    wordMeanList.add(wordMeanJsonArray.getString(i));
                }
                word.setWordMean(wordMeanList);
                word.setPhTtsMp3(contentJson.getString("ph_tts_mp3"));
            }
            word.setWordName(wordName);
            return word;
        }
        catch (JSONException e)
        {
            e.printStackTrace();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return word;
    }


    private void loadSearchWord()
    {
        historyData.clear();
        SharedPreferences h=getSharedPreferences("data",MODE_PRIVATE);
        try {
            JSONArray jsonArray = new JSONArray(h.getString(searchHistoryTag,"[]"));
            for (int i = 0; i < jsonArray.length(); i++) {
                historyData.add(jsonArray.getString(i));
            }
            wordListAdapter ad=new wordListAdapter(MainActivity.this,R.layout.historylistlayout,historyData);
            historyListView.setAdapter(ad);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void recordSearchWord(String searchWord)
    {
        historyData.clear();
        SharedPreferences h=getSharedPreferences("data",MODE_PRIVATE);
        SharedPreferences.Editor e=h.edit();
        try
        {
            JSONArray jsonArray = new JSONArray(h.getString(searchHistoryTag,"[]"));
            for (int i = 0; i < jsonArray.length(); i++)
            {
                historyData.add(jsonArray.getString(i));
            }

            for (int i=0;i<historyData.size();i++)
            {
                if (historyData.get(i).equals(searchWord))
                {
                    historyData.remove(i);
                    break;
                }
            }
            historyData.add(0,searchWord);
            JSONArray newJsonArray = new JSONArray(historyData);
            e.putString(searchHistoryTag,newJsonArray.toString());
            e.commit();
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }

    public boolean isNetworkConnected(Context context)
    {
        if (context != null) {
            ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
            if (mNetworkInfo != null) {
                return mNetworkInfo.isAvailable();
            }
        }
        return false;
    }
}

 

 

 

---------------------------------

public class Word implements Serializable
{
    private String out;
    private String wordName;
    private int status;
    private String phTtsMp3;
    private List<String> wordMean;


    public void setOut(String out)
    {
        this.out = out;
    }

    public String getOut() {
        return out;
    }

    public void setWordName(String wordName)
    {
        this.wordName = wordName;
    }

    public String getWordName() {
        return wordName;
    }

    public void setStatus(int status)
    {
        this.status = status;
    }

    public int getStatus() {
        return status;
    }


    public void setPhTtsMp3(String phTtsMp3) {
        this.phTtsMp3 = phTtsMp3;
    }
    public String getPhTtsMp3() {
        return phTtsMp3;
    }

    public void setWordMean(List<String> wordMean) {
        this.wordMean = wordMean;
    }
    public List<String> getWordMean() {
        return wordMean;
    }


}

---------------------------------------------

 

activity_main

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:id="@+id/activity_main"
    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"
    >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:layout_toLeftOf="@+id/searchButton"
                android:layout_marginRight="0dp"
                android:hint="输入单词或句子"
                android:id="@+id/searchEditText"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true" />

            <Button
                android:id="@+id/searchButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="0dp"
                android:text="搜索"
                android:layout_alignParentRight="true"
                android:layout_centerHorizontal="true"
                android:onClick="search"/>
        </RelativeLayout>

        <TextView
            android:text="历史记录"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView2" />

        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/historyListView"/>

    </LinearLayout>

    <com.victor.loading.rotate.RotateLoading
        android:id="@+id/rotateloading"
        android:layout_width="80dp"
        android:layout_height="80dp"
        app:loading_width="5dp"
        app:loading_color="#2522e6"
        android:layout_centerInParent="true"/>

</RelativeLayout>

 

 

-------------------------------

 

activity_nukonw_word

 

<?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:id="@+id/activity_unkonw_word"
    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"
   >

    <ListView
        android:id="@+id/unknownWordListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        />
</LinearLayout>

 

----------------------------------------------------------

activity_vocabulary

 

<?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:id="@+id/activity_vocabulary"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:orientation="vertical"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:text="TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/wordTextView"
            android:textSize="24sp" />

        <Button
            android:text=" "
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:id="@+id/soundButton"
            android:textSize="10sp"
            android:layout_marginLeft="10dp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/sound"/>

    </LinearLayout>

    <TextView
        android:text="TextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/meanTextView"
        />

    <Button
        android:text="加入生词本"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/addOrRemoveWordButton"
        />
</LinearLayout>

 

-------------------------------------------------------------

historylistlayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:id="@+id/wordListTextView"
        android:layout_weight="1"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:textSize="18sp" />
</LinearLayout>

 

-----------------------------------------------------------

 

menu

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <group android:id="@+id/group2" >
        <item
            android:id="@+id/UnknownWord"
            android:title="生词本">
        </item>
        <item
            android:id="@+id/clearHistory"
            android:title="删除所有历史记录">
        </item>
    </group>

</menu>

 

dimen.xml

<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
</resources>

权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

依赖

 

compile 'com.victor:lib:1.0.4'

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想不上班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值