server ready for testing - but untested

This commit is contained in:
Senad Uka
2014-01-24 07:02:44 +01:00
parent ab14271505
commit ae1d33df5b
2 changed files with 61 additions and 5 deletions

View File

@@ -3,11 +3,13 @@ package com.mhalka.qurantranslationdisplay;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.app.Activity;
import android.util.Log;
public class RemoteControlServer{
public class RemoteControlServer {
public static final String SERVERIP = "0.0.0.0";
public static final int SERVERPORT = 4444;
@@ -32,13 +34,11 @@ public class RemoteControlServer{
@Override
public void recieve(String command) {
// dummy implementation to be sure there is something to call
// dummy interface
}
});
}
public void run() {
DatagramSocket socket = null;
try {

View File

@@ -1,5 +1,9 @@
package com.mhalka.qurantranslationdisplay;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.mhalka.qurantranslationdisplay.RemoteControlServer.OnCommandRecieved;
import com.mhalka.qurantranslationdisplay.VerticalMarqueeTextView.ScrollingStoppedListener;
@@ -7,9 +11,12 @@ import android.app.Activity;
import android.content.res.AssetManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.text.method.ScrollingMovementMethod;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.TranslateAnimation;
@@ -26,12 +33,15 @@ import android.widget.TextView;
public class ShowAyah extends Activity {
private static int NUMBER_OF_MILISECONDS_TO_READ_ONE_LINE = 2500;
private static int NUMBER_OF_MINUTES_BEFORE_RESTARTING_SLIDESHOW = 5;
private VerticalMarqueeTextView ayah;
private TextView chapterName;
int currentChapter=1;
int currentVerse=1;
private RemoteControlServer rcs;
private ServerTask server;
private Handler pauseHandler = new Handler();
private long timeAyahChanged = 0;
@@ -155,9 +165,55 @@ public class ShowAyah extends Activity {
@Override
public void recieve(String command) {
// TODO parse the command and do it !
String pattern = "([SF])(\\d+)(A?)(\\d*)";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(command);
if (m.find()) {
String commandName = m.group(0);
String firstParameter = m.group(1);
if(commandName.equals("S")) {
String secondParameter = m.group(3);
int surah = Integer.parseInt(firstParameter);
int ayah = Integer.parseInt(secondParameter);
handleAyahChange(surah, ayah);
}
else if(commandName.equals("F")) {
int size = Integer.parseInt(firstParameter);
ayah.setTextSize(TypedValue.COMPLEX_UNIT_SP, (float)size);
}
} else {
System.out.println("NO MATCH");
}
}
private void handleAyahChange(int surahNumber, int ayahNumber) {
showAyah(surahNumber, ayahNumber);
timeAyahChanged = (new Date()).getTime();
ayah.pauseMarquee();
pauseHandler.postDelayed(new Runnable() {
@Override
public void run() {
long timeNow = (new Date()).getTime();
long difference = timeNow - timeAyahChanged;
boolean imamFinishedSwitchingAyahs = difference >= NUMBER_OF_MINUTES_BEFORE_RESTARTING_SLIDESHOW * 60 * 1000;
if(imamFinishedSwitchingAyahs) {
ayah.resumeMarquee();
}
// else next posted runnable will try handle the continuation
}
// 100 miliseconds after period should expire try to unpause the slideshow
}, (NUMBER_OF_MINUTES_BEFORE_RESTARTING_SLIDESHOW * 60 * 1000) + 100);
}
});
server.execute("");
}