編輯:關於Android編程
獲取組播鎖
private InetAddress group;
WifiManager wm=(WifiManager)getSystemService(Context.WIFI_SERVICE);
MulticastLock mlock=wm.createMulticastLock("mygroup");
mlock.acquire();
group =InetAddress.getName("239.255.255.250"); //創建多播組
不能在UI thread 上直接發送和接收組播,開辟一個子線程
new Thread(){
public void run(){
StringBuffer sb=new StringBuffer();
sb.append("data"); //發送組播的內容
byte[] sendata=sb.getBytes();
mlock.setLoopbackMode(true); //設置模式 Loopbackmode 不是很清楚 根據意思應該是 周期性的發送消息 這個要看具體的抓包什麼情況
mlock.joinGroup(group);
//設置時間任務每隔3秒發送一次組播
Timer timer=new Timer();
timer.schedule(new MyTimerTask(),3000);
while(true){
DatagramPacket temppacket=new new DatagramPacket(bs, bs.length, group,prot);
mlock.recive(temp);
String packetIpAddress = new String(temp.getData(), 0, temp.getLength()).trim();
if(){ //過濾出想要獲取的信息
}else{
Thread.sleep(2000); //休眠兩秒再接收組播
}
}
}
}.start();
//時間任務
class MyTimerTask extends TimerTask{
byte[] bs = new byte[1024];
@Override
public void run() {
// TODO Auto-generated method stub
DatagramPacket packet = new DatagramPacket(sendData,sendData.length, group, Integer.valueOf(pro.getProperty("multicast_port")));
try {
multicastsocket.send(packet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
接收和發送放在同一個線程裡循環執行
使用 htc 4.01 和sony 4.2.2的可以接收到組播 但是lg nexus 4.3 和nexus 4.4 都接收不到組播!表示很不解呀
難道版本越高 反而不支持組播還是需要在手機上做什麼設置?
以前編程的時候,遇到倒計時的功能時,經常自己去寫,但其實Android已經幫封裝好了一個倒計時類CountDownTimer,其實是將後台線程的創建和Handler隊列封
今天發的是TabHost結合ViewPager實現首頁底部導航的效果,雖然說網上有很多這樣的Demo,不過呢,我還是要把自己練習寫的發出來,沒錯!就是這麼任性; 先上效果
基本概念本文主要講述Launcher3屏幕滑動過程,首先需要了解Android的觸摸事件分發機制。關於分發機制,可查看文章Android事件分發機制。常用類
從今天開始,本專欄持續更新Android簡易實戰類博客文章。和以往專欄不同,此專欄只有實例。每個實例盡量按照知識點對應相應一章節的內容去寫,循序漸進。有些實例可能會與另一