Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的线程_Java_Android_Multithreading - Fatal编程技术网

Java Android中的线程

Java Android中的线程,java,android,multithreading,Java,Android,Multithreading,我编写了一个应用程序,它从web上获取一些信息,并使用mediaplayer进行播放。我的应用程序工作正常,但现在我需要用两种语言调用此信息,即用两种不同的语言逐个重复相同的信息。 这是我的线程,当用一种语言调用信息时,它工作得非常好,但我想找到一种用另一种语言调用相同信息的方法。任何帮助都将不胜感激。提前谢谢 public class QueueListenerThread extends Thread { private final String VOICE_DATA_FOLDER

我编写了一个应用程序,它从web上获取一些信息,并使用mediaplayer进行播放。我的应用程序工作正常,但现在我需要用两种语言调用此信息,即用两种不同的语言逐个重复相同的信息。 这是我的线程,当用一种语言调用信息时,它工作得非常好,但我想找到一种用另一种语言调用相同信息的方法。任何帮助都将不胜感激。提前谢谢

public class QueueListenerThread extends Thread {

    private final String VOICE_DATA_FOLDER = "voicedata/";

    private final String RAW_VOICE_DATA_SCHEME = "android.resource://com.stech.QmaticVoiceModule/raw/voicedata";

    private final String CONTANTS_FOLDER = "constants/";

    private String BASE_LANGUAGE_FOLDER = "urdu/";

    private Queue<String> calledTickets = null;
    private Context context = null;
    private String[] q;


    public QueueListenerThread(String threadName, Context ctxt, Queue<String> reccalledTickets){
        super(threadName);

        context = ctxt;

        calledTickets = reccalledTickets;

    }

    @Override
    public void run() {

        //we have to keep looking for the new called tickets
        while (true){

            try{

                ListenQueue();

            }catch(Exception ex){

                ex.printStackTrace();

            }

        }

    }

    private void ListenQueue() throws InterruptedException{

        if (calledTickets.size() > 0){

            String recString = calledTickets.poll();

            StrTokenizer tokenizer = new StrTokenizer(recString, '-');
            List<String> tokens = tokenizer.getTokenList();

            q = voiceQueueForTicketCounter(tokens.get(0), tokens.get(1));

            MediaPlayerThread mpThread = new MediaPlayerThread("MediaPlayer Thread", context, q);
            mpThread.start();

            try {
                mpThread.join();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

        //wait one second
        Thread.sleep(1000);

    }

    private String[] voiceQueueForTicketCounter(String Ticket, String Counter){

        List<String> q = new ArrayList<String>();

        if (Constants.IS_VOICE_DATA_ON_SD_CARD){



        }else{

            //access files from raw resource

            //add bell voice
            q.add(BASE_LANGUAGE_FOLDER + "bell.wav");


            //add Ticket voice
            q.add(BASE_LANGUAGE_FOLDER + "tn.wav");


            //remove all leading zeros from Ticket Number if found 001 - 099
            Ticket = Ticket.replaceFirst("^0+(?!$)", "");

            if (Ticket.length() <= 2){

                q.add(BASE_LANGUAGE_FOLDER + Ticket + ".wav");

            }
            else if (Ticket.length() == 3){

                q.add(BASE_LANGUAGE_FOLDER + (Ticket.substring(0, Ticket.length() - 2)) + "00.wav");

                if (!((Ticket.substring(1)).replaceFirst("^0+(?!$)", "")).equalsIgnoreCase("0")){

                    q.add(BASE_LANGUAGE_FOLDER + (Ticket.substring(1)).replaceFirst("^0+(?!$)", "") + ".wav");

                }

            }
            else if (Ticket.length() == 4){

                //first play thousand file for urdu
                if (BASE_LANGUAGE_FOLDER == "urdu/"){

                    q.add(BASE_LANGUAGE_FOLDER + (Ticket.substring(0, Ticket.length() - 3)) + "01.wav");

                }else if (BASE_LANGUAGE_FOLDER == "dari/"){

                    //call the single number
                    q.add(BASE_LANGUAGE_FOLDER + (Ticket.substring(0, Ticket.length() - 3)) + ".wav");

                    //call the 1000 voice
                    q.add(BASE_LANGUAGE_FOLDER + "1000.wav");

                }

                //then play hundred file
                Ticket = (Ticket.substring(1)).replaceFirst("^0+(?!$)", "");

                if (Ticket.length() == 3){

                    q.add(BASE_LANGUAGE_FOLDER + (Ticket.substring(0, Ticket.length() - 2)) + "00.wav");

                    if (!((Ticket.substring(1)).replaceFirst("^0+(?!$)", "")).equalsIgnoreCase("0")){

                        q.add(BASE_LANGUAGE_FOLDER + (Ticket.substring(1)).replaceFirst("^0+(?!$)", "") + ".wav");

                    }

                }
                else if (Ticket.length() <= 2){

                    q.add(BASE_LANGUAGE_FOLDER + Ticket + ".wav");
                }

            }

            //add counter voice
            q.add(BASE_LANGUAGE_FOLDER + "counter.wav");

            //add counter 
            q.add(BASE_LANGUAGE_FOLDER + Counter + ".wav");

            //add per tashreef lay jaiye
            q.add(BASE_LANGUAGE_FOLDER + "ptlj.wav");

        }


        return q.toArray(new String[0]);
    }

}
公共类QueueListenerThread扩展线程{
私有最终字符串VOICE_DATA_FOLDER=“voicedata/”;
私有最终字符串RAW\u VOICE\u DATA\u SCHEME=“android。resource://com.stech.QmaticVoiceModule/raw/voicedata";
私有最终字符串CONTANTS_FOLDER=“constants/”;
私有字符串BASE_LANGUAGE_FOLDER=“urdu/”;
私有队列calledTickets=null;
私有上下文=null;
私有字符串[]q;
公共队列ListenerThread(字符串threadName、上下文ctxt、队列reccalledTickets){
超级(线程名称);
上下文=ctxt;
calledTickets=reccalledTickets;
}
@凌驾
公开募捐{
//我们必须继续寻找新的票
while(true){
试一试{
ListenQueue();
}捕获(例外情况除外){
例如printStackTrace();
}
}
}
private void ListenQueue()引发InterruptedException{
如果(调用的tickets.size()>0){
String recString=calledTickets.poll();
StrTokenizer标记器=新的StrTokenizer(recString,'-');
List tokens=tokenizer.getTokenList();
q=voiceQueueForTicketCounter(tokens.get(0),tokens.get(1));
MediaPlayerThread mpThread=新的MediaPlayerThread(“MediaPlayer线程”,上下文,q);
mpThread.start();
试一试{
mpThread.join();
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
//等一下
睡眠(1000);
}
私有字符串[]voiceQueueForTicketCounter(字符串票证、字符串计数器){
列表q=新的ArrayList();
if(常量。是SD卡上的语音数据){
}否则{
//从原始资源访问文件
//添加铃声
q、 添加(基本语言文件夹+“bell.wav”);
//添加票务语音
q、 添加(基本语言文件夹+“tn.wav”);
//如果发现001-099,则从票据编号中删除所有前导零
票证=票证.replaceFirst(“^0+(?!$)”,”);
如果(票证长度()