用手机遥控电视我想过几个方案,包括一些事后才知道很荒唐可笑的方案,比如,我以为既然红光和蓝光可以合成紫光,那么同样也可以通过f=f0-f1的方式得到红外光。如果这样,那么我们就可以用手机屏幕做一个红外发射装置。其实这是不可能的,因为:1.所谓红光和蓝光可以合成紫光其实是人眼的错觉,并没有产生实际上的紫光。2.手机屏幕的刷新频率达不到38KHz。
虽然如此,我还是实验着写个程序,设置不同颜色并不断变化颜色的条纹。可想而知,用红外接收器抓了一晚上,也没有抓到任何信号。
用手机的闪光灯去做红外发射装置据说是可行的,因为闪光灯会产生副产品,副产品中就包括红外光。但是有两个原因会影响它的遥控距离(猜测):1.副产品中红外光太弱。2。闪光灯太发散。有人做了实验,用这种方式制作的遥控器,遥控距离只有1米左右。可惜我的手机没有闪光灯,有机会倒是可以试试。
也有人试图通过手机耳机去控制一个外加的红外发光二极管。这种方式不知道效果如何,因为估计耳机很难达到38KHz的频率。但是说不定不用38KHz也可的,接收到红外遥控信号的38KHz载波信号其实很弱。有时间再试试。
我还是一如既往地通过s3c6410的开发板实现的。即,手机通过wifi发送指令到带wifi的开发板,然后开放板去控制红外发生器。
其实,这不是我想要的方式,因为需要在手机上安装一个客户端。我最想通过在浏览器里submit指令的方式去实现。恩,先就这样,下一步再去试着实现。
代码如下,自然,又是在网上抄的,学名叫“来料加工”:
服务器端:
AndroidManifest.xml
encoding="utf-8"?>
package="com.auly.control"
android:versionCode="1"
android:versionName="1.0">
android:label="@string/app_name">
android:label="@string/app_name">
/>
android:name="android.intent.category.LAUNCHER"
/>
android:name="android.permission.INTERNET">
package com.auly.control;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import android.widget.EditText;
//import android.widget.TextView;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
public class vibrator extends Activity {
public static final int VIB_ON = 1;
public static final int VIB_OFF = 0;
private EditText EditMessage;
vibClass mvibClass;
Thread sThread=null;
int
myMESSAGE=1;
String
str;
public
Handler sHandler = new
Handler(){ public void handleMessage(Message msg)
{ int i = msg.what; if(i ==
myMESSAGE){ EditMessage.setText(str); if(str.equals("VOL+")){
vibClass.IOCTLVIB(0,VIB_ON,true,"");
EditMessage.setText("vol+++");}
} else { //un-support message type } } };
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditMessage=(EditText)findViewById(R.id.EditMessage);
// Start=(Button)findViewById(R.id.Start);
// EditIP=(EditText)findViewById(R.id. EditIP);
str="str";
sThread = new Thread(new
Runnable(){ public void
run(){ try {
ServerSocket serverSocket=new
ServerSocket(8080);
//str="openserver";
while(true)
{
//System.out.println("接收用户连接:");
//接受客户端请求
Socket
client=serverSocket.accept();
//System.out.println("accept:");
try