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