因为公司要实现此功能,故先搞个最简单的测试下可行性!
原理很简单,就是采用socket与serversocket直接的通信!!暂不考虑重力等数据的传递,只传递了KeyDown事件!
实在太易容了,不多说直接贴代码
机顶盒端代码:
package cn.tvsr.remotedemo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class RemoteDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Thread(new Runnable() {
@Override
public void run() {
ServerSocket server;
try {
server = new ServerSocket(6868);
System.out.println("Tvsr:Server Started!");
while(true){
System.out.println("Tvsr:Server Runing!");
Socket client = server.accept();
InputStream ins = client.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
final String tmp = br.readLine();
final int keyCode = Integer.parseInt(tmp);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Tvsr:Message received!-->keyCode:"+tmp,
Toast.LENGTH_LONG).show();
System.out.println("Tvsr:Message received!-->keyCode:"+tmp);
RemoteDemoActivity.this.onKeyDown(keyCode,
new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
}
});
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
手机端代码:
package cn.tvsr.controldemo;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;
public class ControlDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Toast.makeText(getApplicationContext(),
"keyCode:"+keyCode, Toast.LENGTH_LONG).show();
try {
Socket socket = new Socket("192.168.5.101", 6868);
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println(keyCode);
ps.flush();
ps.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
System.out.println("Tvsr:Server err!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Tvsr:Server err!");
e.printStackTrace();
}
return super.onKeyDown(keyCode, event);
}
}
结束!此次重点测试socket与serversocket之间的通信!
记得加上:<uses-permission android:name="android.permission.INTERNET"/>