作者LaPass (LaPass)
看板AndroidDev
标题Re: [问题] 让WIFI一直连续扫描SSID後显示?
时间Wed Oct 5 08:56:05 2011
要用别的执行绪下去跑,让他一直抓资料
但不同执行绪没办法去动TEXTVIEW之类的UI元件
所以要用Handler或是runOnUiThread();
Runnable r = new Runnable()
{
@Override
public void run()
{
// TODO 你要做的事
}
};
方法1 (有办法取得UI执行绪的Handler时):
Handler h = new Handler();
h.postDelayed(r,10000);
方法2 (在不同执行绪中时):
new Thread(new Runnable()
{
@Override
public void run()
{
SystemClock.sleep(10000);
runOnUiThread(r);
}
}).start();
※ 引述《paladin90974 (芭乐丁パラディン)》之铭言:
: 各位乡民晚安
: 小弟想要做一个功能
: 就是让手机一直呈扫描AP的状态
: 然後取得资讯後显示在TEXTVIEW上
: 接着蒐集某个AP的info.level资讯後自动平均
: 我的认知是,只要WIFI功能有打开应该就会不停的扫描AP资讯
: 但是现在的成果是抓完後就会先显示目前抓到的,然後显示完之後就停了
: 大概要等个10-15秒才会再动.
: 我有试着调整过AP释放电波的间隔,但是没有用
: 抓现成的APP来测试人家是做得到一秒刷一次的,但是不知道怎麽做...
: 这瓶颈好卡啊...
: 片段程式码:
↓用if比较好,不然会有可能会没有回应
: while(results.hasNext()) {
: ScanResult info = results.next();
: String wifiInfo = "名称: " + info.SSID + " ; Rssi = " + info.level + "dBm";
: Log.v("WiFi", wifiInfo);
: String ssid01 = info.SSID;
: fullInfo += wifiInfo + "\n";
: int RA = info.level;
: if(ssid01.equals("rssitest")){ //如果抓到指定AP就拿来平均
: i=i+1;
: RA = RA + info.level;
: RA = RA / i;
: rainfo += ssid01 + " ; RssiAvg = " + RA + "dBm" + "\n";
: RssAvg.setText(rainfo);
: };
: status.setText(fullInfo);
: }
: 不知道是其实有抓但是显示没刷新,或是程式码根本就没在跑
: 另外10-15秒重抓也很迷,因为我没有写类似的程式码...
: 我以为用WHILE回圈就会一直跑,不知道这样子想对不对
: 最终成果是想要5秒抓5笔资讯然後平均讯号强度
: 请各位乡民帮小弟解惑@@
: 谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.58.232
1F:→ paladin90974:喔喔可以了! 非常感谢! 10/05 21:32
2F:推 tomap41017:new Handler(Looper.getMainLooper))就可取得UI 10/06 01:16
3F:→ LaPass:谢谢楼上告知 10/06 07:58