屏幕控制--UDP

public class ScreenControlActivity extends Activity {
/** Called when the activity is first created. */
TextView mIp;
Button searchBtn,clearBtn;
ListView lv;
ProgressBar progress;
LayoutInflater inflater;

List<STB> stbs;
BaseAdapter ba;
Handler handler;
DatagramSocket s = null;
String mip;

private static final String testTitle = "xxxx";//
private static final int testDuration = 304;
private static final String testUrl = "http://xxxxx.mp4";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mip = getLocalIpAddress();
stbs = new ArrayList<STB>();
try {
s = new DatagramSocket(6801);
} catch (SocketException e) {
e.printStackTrace();
}
findByIds();
Thread mReceiveThread= new Thread(mReceiveRunnable);  
        mReceiveThread.start();
}


private void findByIds() {
inflater = LayoutInflater.from(this);
mIp = (TextView) findViewById(R.id.mIp);
searchBtn = (Button) findViewById(R.id.search);
clearBtn = (Button) findViewById(R.id.clear);
lv = (ListView) findViewById(R.id.listView1);
progress = (ProgressBar) findViewById(R.id.progressBar1);
mIp.setText("本机ip:" + mip);
searchBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
String destIp = mip.substring(0, mip.lastIndexOf(".")+1);
System.out.println("destIp---->"+destIp);
for(int i = 2;i<255;i++){
search(destIp+i);
}
}
}).start();
}
});
clearBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
stbs.removeAll(stbs);
ba.notifyDataSetChanged();
}
});
ba = new MyAdapter();
handler = new Handler(){


@Override
public void handleMessage(Message msg) {
ba.notifyDataSetChanged();
lv.setAdapter(ba);
super.handleMessage(msg);
}
};
}






public void search(String destip) {
try {
byte [] data = ReqXmlUtil.SearchReq( "123456",getLocalIpAddress());
InetAddress stbIp = InetAddress.getByName(destip);
DatagramPacket p = new DatagramPacket(data, data.length, stbIp,ReqXmlUtil.stbPort);
s.send(p);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
ex.printStackTrace();
}
return null;
}


    Runnable mReceiveRunnable = new Runnable() {  
        public void run() {  
        startReceive();
        }  
    };  
    
protected void startReceive() {
try {  
            byte[] buffer = new byte[1024];  
            DatagramPacket packet = new DatagramPacket(buffer,buffer.length);  
            while (true) {  
                s.receive(packet);  
                if (packet.getLength() > 0) {  
                    String str = new String(buffer, 0, packet  
                            .getLength());
                    System.out.println("receive-->"+str);
                    MscpDataParser.getInstance().init(this);
               //得到udp数据: datagramPacket
               MscpDataParser.getInstance().parse(packet,new MscpDataParser.CallBack() {
                      @Override
                      public void onParseCompleted(HashMap<String, String> map) {
                          // TODO Auto-generated method stub
                          if( map != null ){
                              // handle your map
                         String req = map.get("cmd");
                         System.out.println("req--->"+req);
                         if(req!=null){
                         if(req.equals("stbresp")){//搜索回应
                         STB stb = new STB(map.get("IP"), map.get("taskno"),
                         map.get("username"), map.get("password"), map.get("mcid"));
                         System.out.println("Stb-->"+stb.toString());
                         checkStbIsExist(stb);
                         }else if(req.equals("playresp")){//播放状态回应--待处理--应该提供STB的Mcid/ip?
                         PlayStatus playStatus = new PlayStatus();
                         System.out.println("==========playresp===========");
                         System.out.println("taskno-->"+map.get("taskno"));
//                         <!— 播放状态:1-成功,0-失败,2-暂停 3-播放完成 -->
                         System.out.println("status-->"+map.get("status"));
                         playStatus.setStatus(Integer.parseInt(map.get("status")));
//                         <!— 播放位置:pos是秒 -->
                         System.out.println("pos-->"+map.get("pos"));
                         playStatus.setPos(Integer.parseInt(map.get("pos")));
//                         <!— 片长:秒 -->
                         System.out.println("duration-->"+map.get("duration"));
                         playStatus.setPos(Integer.parseInt(map.get("duration")));
//                         <!— 音量 -->
                         System.out.println("volume-->"+map.get("volume"));
                         playStatus.setPos(Integer.parseInt(map.get("volume")));
//                         <!— 最大音量 -->
                         System.out.println("maxvol-->"+map.get("maxvol"));
                         playStatus.setPos(Integer.parseInt(map.get("maxvol")));
                         System.out.println("=============================");
                         
                         }
                         }
                          }
                      }


private void checkStbIsExist(STB stb) {
boolean isStbExist = false;
 for(int i=0;i<stbs.size();i++){
 String tempIp = stbs.get(i).getIp();
 if(stb.getIp().equals(tempIp)){
 isStbExist = true;
 }
 }
 if(!isStbExist)
 stbs.add(stb);
 System.out.println("checkStbIsExist--->"+isStbExist);
}
                   
                     @Override
                      public void onError(int code, String desc) {
                         // TODO Auto-generated method stub
                      }
                  });
                    
                    handler.sendEmptyMessageDelayed(1, 100);
                }  
            }
        } catch (SocketException e) {  
            e.printStackTrace();
        } catch (IOException e) {  
            e.printStackTrace();
        }
}
    
class MyAdapter extends BaseAdapter{


@Override
public int getCount() {
return stbs.size();
}


@Override
public Object getItem(int arg0) {
return null;
}


@Override
public long getItemId(int position) {
return 0;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = inflater.inflate(R.layout.stbitem, null);
TextView stbName = (TextView) v.findViewById(R.id.stbItem_stbName);
TextView stbIP = (TextView) v.findViewById(R.id.stbItem_stbIp);
Button playBtn = (Button) v.findViewById(R.id.play);
Button pauseBtn = (Button) v.findViewById(R.id.pause);
Button stopBtn = (Button) v.findViewById(R.id.stop);
SeekBar voice = (SeekBar) v.findViewById(R.id.voice);
voice.setMax(100);
SeekBar duration = (SeekBar) v.findViewById(R.id.duration);
final STB stb = stbs.get(position);
stbName.setText(stb.getUsername());
stbIP.setText(stb.getIp());


playBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
play(stb.getIp(),ReqXmlUtil.stbPort , testTitle,testDuration,testUrl);
System.out.println("--play---");
}
});
pauseBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
pause(stb.getIp(),ReqXmlUtil.stbPort);
System.out.println("--pause---");
}
});
stopBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
stop(stb.getIp(), ReqXmlUtil.stbPort, 123456, mip);
System.out.println("--stop---");
}
});

voice.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// voiceChanged(stb.getIp(), ReqXmlUtil.stbPort, 123456, mip,seekBar.getProgress(),100);
// System.out.println("--StopTrackingTouch---"+seekBar.getProgress());
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
volumeChanged(stb.getIp(), ReqXmlUtil.stbPort, 123456, mip,progress,100);
System.out.println("--onProgressChanged---"+progress);
}
});
duration.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// duriationChanged(stb.getIp(), ReqXmlUtil.stbPort, 123456, mip,seekBar.getProgress());
// System.out.println("--OnSeekBarChangeListener---"+seekBar.getProgress());
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
duriationChanged(stb.getIp(), ReqXmlUtil.stbPort, 123456, mip,progress);
System.out.println("--onProgressChanged---"+progress);
}
});
return v;

}


protected void volumeChanged(String destIp, int stbport, int taskno, String mip, int volume, int maxvol) {
byte[] data = ReqXmlUtil.VolumeReq(taskno, mip, volume, maxvol);
try {
s.send(new DatagramPacket(data, data.length, InetAddress.getByName(destIp), stbport));
} catch (IOException e) {
e.printStackTrace();
}
}

protected void duriationChanged(String destIp, int stbport, int taskno, String mip,int pos) {
byte[] data = ReqXmlUtil.SeekReq(taskno, mip, pos);
try {
s.send(new DatagramPacket(data, data.length, InetAddress.getByName(destIp), stbport));
} catch (IOException e) {
e.printStackTrace();
}
}


protected void stop(String destIp,int destPort,int taskno, String mip) {
byte[] data = ReqXmlUtil.StopReq(123456, mip);
try {
s.send(new DatagramPacket(data, data.length, InetAddress.getByName(destIp), destPort));
} catch (IOException e) {
e.printStackTrace();
}
}


protected void pause(String destIp,int destPort) {
byte[] data = ReqXmlUtil.PauseReq(123456, destIp);
try {
s.send(new DatagramPacket(data, data.length,InetAddress.getByName(destIp),destPort));
} catch (IOException e) {
e.printStackTrace();
}
}
protected void play(String destIp,int destPort,String title, int duration, String url) {
byte[] data = ReqXmlUtil.PlayReq(123456, mip, title, duration, url);
try {
s.send(new DatagramPacket(data, data.length,InetAddress.getByName(destIp),destPort));
} catch (IOException e) {
e.printStackTrace();
}
}

}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: HT7017-TR是一款智能手机的型号。它配备了先进的技术和功能,为用户提供便捷的通信和娱乐体验。 首先,HT7017-TR的外观设计时尚大气,采用了精致的工艺和材料。它的机身轻薄,手握舒适,简约而不失时尚感。同时,该手机的屏幕大小适中,显示清晰细腻,色彩鲜艳,提供了良好的视觉效果。 其次,HT7017-TR搭载了高性能的处理器和操作系统。它能够快速响应用户的操作指令,运行应用程序更为流畅。用户可以轻松地浏览网页、观看高清视频、玩游戏等。此外,HT7017-TR还支持多任务处理,用户可以同时运行多个应用程序,节省时间和提高工作效率。 HT7017-TR还具备出色的摄影功能。它配备了高像素的后置摄像头,拍摄出的照片清晰细腻,色彩饱满。独特的拍照模式和滤镜效果,让用户能够捕捉到更多精彩瞬间。此外,该手机还支持高清视频录制,记录生活中的美好时刻。 此外,HT7017-TR还拥有大容量的内存和存储空间。用户可以存储大量的照片、视频、音乐等文件,随时随地享受多媒体娱乐。此外,该手机还支持扩展存储卡,用户可以根据需要自行增加存储空间。 总之,HT7017-TR是一款功能强大、外观时尚的智能手机。它具备高性能处理器、优秀的摄影功能和大容量的存储空间,为用户提供了便捷的通信和娱乐体验。无论是日常使用还是使用于工作,HT7017-TR都能满足用户的需求。 ### 回答2: HT7017-TR是一款高性能、多功能的无线通信模块,可以实现无线数据传输和远程控制。该模块采用工业级设计,具有稳定的性能和较长的通信距离。 HT7017-TR通信模块支持多种通信协议,包括TCP/IP、UDP、HTTP等,可以根据需求选择合适的通信方式。同时,它还内置了网络搜索和MAC地址过滤等功能,确保通信的安全性和稳定性。模块还支持多种数据传输方式,包括透传模式和命令模式,可以根据应用场景进行灵活配置。 该模块的使用非常简单,只需连接适当的天线和电源,通过串口或USB接口与主控设备进行通信即可。它还提供了丰富的API接口,方便开发者对模块进行配置和控制。 HT7017-TR通信模块广泛应用于物联网、远程监控、智能家居等领域。它可以实现设备之间的远程通信和控制,从而提高了设备的智能化和自动化水平。同时,该模块的稳定性和可靠性也得到了市场的认可,成为众多工程师和开发者的首选。 总之,HT7017-TR通信模块是一款功能强大、性能稳定的无线通信模块,具有广泛的应用前景。无论是在物联网、远程监控还是智能家居等领域,它都能为设备的无线通信和远程控制提供可靠的解决方案。 ### 回答3: 《 HT7017-TR 手册》是一本用来指导和解释 HT7017-TR 型号产品使用方法和功能的手册。HT7017-TR 是一款具有特定功能和特性的设备,主要用于某种特定行业或用途。 手册的目的是为用户提供关于 HT7017-TR 的详细信息,以确保用户能够正确、安全地操作设备。手册通常包括以下内容: 1.产品介绍:手册会介绍 HT7017-TR 的功能、特性和技术规格,以帮助用户了解该产品的基本信息。 2.安装指南:手册会提供设备的安装指南,包括设备的安装位置、连接方式和设置步骤,以确保设备能够正常工作。 3.操作指南:手册会提供设备的操作说明,包括如何使用设备的各种功能和操作按钮。用户可以通过手册了解产品的操作流程和操作方法。 4.故障排除:手册通常会提供一些常见故障和故障排除方法,以帮助用户在设备出现问题时快速找到解决方案。 5.维护说明:手册会提供一些关于设备维护的建议和说明,包括清洁设备、更换零部件等内容,以确保设备的正常运行和延长设备的使用寿命。 通过阅读《HT7017-TR 手册》,用户可以了解和掌握该设备的各方面信息,包括安装、操作、故障解决和维护等。手册的编写目的是为了帮助用户更好地使用和维护 HT7017-TR,提高设备的性能和稳定性。用户在使用设备时应该仔细阅读并理解手册中的内容,并按照手册的指示进行操作和维护,以确保设备的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值