Android Open Source - Android-Apps Remote Reader From Project Back to project page Android-Apps .
License The source code is released under:
Apache License
If you think the Android project Android-Apps listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package de.quist.samy.remocon;
/ * w w w . j a v a 2 s . c o m * /
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.InterruptedIOException;
import java.io.Reader;
import java.util.Arrays;
public class RemoteReader {
public interface ReplyHandler {
void onRegistrationSuccessfull();
void onRegistrationDenied();
void onRegistrationTimeout();
void onUnknownStatus(char [] status);
void onClose(IOException e);
}
private static final char [] REGISTRATION_ALLOWED = new char [] {0x64, 0x00, 0x01, 0x00};
private static final char [] REGISTRATION_DENIED = new char [] {0x64, 0x00, 0x00, 0x00};
private static final char [] REGISTRATION_TIMEOUT = new char [] {0x65, 0x00};
private static final char [] EVERYTHING_IS_FINE = new char [] {0x00, 0x00, 0x00, 0x00};
private InputStream in;
private ReplyHandler handler;
private Thread worker;
private InputStreamReader reader;
private boolean active;
RemoteReader(InputStream in, ReplyHandler handler) {
this.in = in;
this.handler = handler;
}
public synchronized void start() {
if (active) return ;
this.reader = new InputStreamReader(in);
active = true;
this.worker = new Thread(new Runnable() {
public void run() {
try {
work();
} catch (IOException e) {
if (active) {
handler.onClose(e);
}
active = false;
}
}
});
this.worker.start();
}
private void work() throws IOException, InterruptedIOException {
while (active) {
int messageType = reader.read();
String identifier = readText(reader);
char [] status = readCharArray(reader);
if (Arrays.equals(REGISTRATION_ALLOWED, status)) {
handler.onRegistrationSuccessfull();
} else if (Arrays.equals(REGISTRATION_DENIED, status)) {
handler.onRegistrationDenied();
} else if (Arrays.equals(REGISTRATION_TIMEOUT, status)) {
handler.onRegistrationTimeout();
} else {
handler.onUnknownStatus(status);
}
}
}
private static String readText(Reader reader) throws IOException {
char [] buffer = readCharArray(reader);
return new String(buffer);
}
private static char [] readCharArray(Reader reader) throws IOException {
if (reader.markSupported()) reader.mark(1024);
int length = reader.read();
int delimiter = reader.read();
if (delimiter != 0) {
if (reader.markSupported()) reader.reset();
throw new IOException("Unsupported reply exception" );
}
char [] buffer = new char [length];
reader.read(buffer);
return buffer;
}
public synchronized void stop() {
if (!active) return ;
this.active = false;
if (this.worker != null) {
try {
in.close();
} catch (IOException e) {
}
worker.interrupt();
}
}
}
Java Source Code List com.kniezrec.remoterecorder.Communication.java com.kniezrec.remoterecorder.MainServiceConnection.java com.kniezrec.remoterecorder.MainService.java com.kniezrec.remoterecorder.RequestType.java com.kniezrec.remoterecorder.Request.java com.kniezrec.voiceremote2.BSeriesKeyCodeSenderFactory.java com.kniezrec.voiceremote2.BSeriesSender.java com.kniezrec.voiceremote2.CSeriesButtons.java com.kniezrec.voiceremote2.CSeriesKeyCodeSenderFactory.java com.kniezrec.voiceremote2.CSeriesSender.java com.kniezrec.voiceremote2.CommandsFragment.java com.kniezrec.voiceremote2.Commands.java com.kniezrec.voiceremote2.Discovery.java com.kniezrec.voiceremote2.FSeriesButtons.java com.kniezrec.voiceremote2.Group.java com.kniezrec.voiceremote2.HelpFragment.java com.kniezrec.voiceremote2.HostnamePreference.java com.kniezrec.voiceremote2.KeyCodeSender.java com.kniezrec.voiceremote2.ListActionsFragment.java com.kniezrec.voiceremote2.MainActivity.java com.kniezrec.voiceremote2.MainFragment.java com.kniezrec.voiceremote2.Mapper.java com.kniezrec.voiceremote2.MyExpandableListAdapter.java com.kniezrec.voiceremote2.NewActionEdit.java com.kniezrec.voiceremote2.NewActionSingleEdit.java com.kniezrec.voiceremote2.NewAction.java com.kniezrec.voiceremote2.RemoteButton.java com.kniezrec.voiceremote2.SenderFactory.java com.kniezrec.voiceremote2.Sender.java com.kniezrec.voiceremote2.SettingsActivity.java com.kniezrec.voiceremote2.TextSender.java com.kniezrec.voiceremotefree.BSeriesKeyCodeSenderFactory.java com.kniezrec.voiceremotefree.BSeriesSender.java com.kniezrec.voiceremotefree.CSeriesButtons.java com.kniezrec.voiceremotefree.CSeriesKeyCodeSenderFactory.java com.kniezrec.voiceremotefree.CSeriesSender.java com.kniezrec.voiceremotefree.Commands.java com.kniezrec.voiceremotefree.Discovery.java com.kniezrec.voiceremotefree.FSeriesButtons.java com.kniezrec.voiceremotefree.HelpActivity.java com.kniezrec.voiceremotefree.HostnamePreference.java com.kniezrec.voiceremotefree.KeyCodeSender.java com.kniezrec.voiceremotefree.ListActionsActivity.java com.kniezrec.voiceremotefree.MainActivity.java com.kniezrec.voiceremotefree.Mapper.java com.kniezrec.voiceremotefree.NewActionEdit.java com.kniezrec.voiceremotefree.NewActionSingleEdit.java com.kniezrec.voiceremotefree.NewAction.java com.kniezrec.voiceremotefree.RemoteButton.java com.kniezrec.voiceremotefree.SenderFactory.java com.kniezrec.voiceremotefree.Sender.java com.kniezrec.voiceremotefree.Setings.java com.kniezrec.voiceremotefree.SettingsActivity.java com.kniezrec.voiceremotefree.TextSender.java com.kniezrec.xbmcgear.connection.AndroidApplication.java com.kniezrec.xbmcgear.connection.Connection.java com.kniezrec.xbmcgear.connection.GearJSON.java com.kniezrec.xbmcgear.connection.JSONRPCRequest.java com.kniezrec.xbmcgear.connection.JSONRequestFactory.java com.kniezrec.xbmcgear.connection.NSDResolve.java com.kniezrec.xbmcgear.connection.NSDSearch.java com.kniezrec.xbmcgear.connection.ProviderConnection.java com.kniezrec.xbmcgear.connection.ProviderService.java com.kniezrec.xbmcgear.connection.ResponseParser.java com.kniezrec.xbmcgear.connection.WakeOnLan.java com.kniezrec.xbmcgear.player.Kodi.java com.kniezrec.xbmcgear.player.Player.java com.kniezrec.xbmcgear.player.Playlist.java com.kniezrec.xbmcgear.player.Song.java com.kniezrec.xbmcgear.player.Video.java com.kniezrec.xbmcgear.preferences.HostTable.java com.kniezrec.xbmcgear.preferences.Host.java com.kniezrec.xbmcgear.preferences.HostsDataSource.java com.kniezrec.xbmcgear.preferences.HostsDatabaseHelper.java com.kniezrec.xbmcgear.preferences.SharedPreferencesUtil.java com.kniezrec.xbmcgear.presentation.AnimationManager.java com.kniezrec.xbmcgear.presentation.AutoConfigurationActivity.java com.kniezrec.xbmcgear.presentation.HostSetActivity.java com.kniezrec.xbmcgear.presentation.InstanceActivity.java com.kniezrec.xbmcgear.presentation.MainActivity.java com.kniezrec.xbmcgear.presentation.StyleDialogFragment.java com.kniezrec.xbmcgear.presentation.ViewMode.java com.uraroji.garage.android.lame.SimpleLame.java com.uraroji.garage.android.mp3recvoice.RecMicToMp3.java de.quist.samy.remocon.Base64.java de.quist.samy.remocon.Base64.java de.quist.samy.remocon.ConnectionDeniedException.java de.quist.samy.remocon.ConnectionDeniedException.java de.quist.samy.remocon.Key.java de.quist.samy.remocon.Key.java de.quist.samy.remocon.Loggable.java de.quist.samy.remocon.Loggable.java de.quist.samy.remocon.RemoteReader.java de.quist.samy.remocon.RemoteReader.java de.quist.samy.remocon.RemoteSession.java de.quist.samy.remocon.RemoteSession.java