日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android光传感实现摩斯密码,根据莫尔斯代码 - Android的闪烁闪光。 如何避免ANR次数由于睡觉? (火炬APP)...

發(fā)布時(shí)間:2024/7/23 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android光传感实现摩斯密码,根据莫尔斯代码 - Android的闪烁闪光。 如何避免ANR次数由于睡觉? (火炬APP)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

所以,我做了一個(gè)火把應(yīng)用...正常火炬功能完全正常,沒有任何問題。

下面介紹以下功能,可能會(huì)導(dǎo)致可能的ANR的說,我想通過閃爍的閃光燈發(fā)出SOS信息(莫爾斯電碼)。 (其111-000-111),所以它開 - 開 - 開 - 關(guān) - 關(guān) - 和重復(fù)。

(慢慢讀)我“開”是一小會(huì)兒,然后微微一晃,“開”再次 - 這是區(qū)分兩個(gè)連續(xù)“開” S ......這就是我得到三個(gè)不同的閃爍。

麻煩的是,對(duì)于延時(shí),我把線程睡眠。(這種方法的工作最適合我)

下面是我的示例功能,它閃爍出SOS:(我有一個(gè)SOS按鈕,單獨(dú))

public void sos(View v) {

String myString = "111000111";

for (int x = 0; x < myString.length(); x++) {

if (myString.charAt(x) == '1') {

p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

c.setParameters(p);

c.startPreview();

flag = true;

} else {

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

flag = false;

}

try {

Thread.sleep(300);

} catch (InterruptedException e) {

e.printStackTrace();

}

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

try {

Thread.sleep(300);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

}

}

上述閃爍出SOS一次。 不過,雖然這閃爍,閃爍是怎么回事,我的應(yīng)用程序被凍結(jié)了。 閃爍SOS是完美的。 但它并沒有任何按鈕點(diǎn)擊,甚至后退按鈕響應(yīng)中途停止。

我認(rèn)為這是因?yàn)榫€程(UI)正在睡覺,因此它并不關(guān)心用戶正在做)......但肯定點(diǎn)擊注冊(cè),如果按照到Android如果沒有后在規(guī)定的看著的時(shí)間(我想了幾秒鐘)期...該應(yīng)用程序進(jìn)入ANR。

所以,我需要與我定義的間隔短暫的停頓(正如上面我用300毫秒)。 但我也想知道如何讓應(yīng)用同時(shí)響應(yīng)說按鈕點(diǎn)擊或后退按鈕按下,以避免ANR的,并給予用戶關(guān)閉在任何時(shí)候閃爍的能力。

這個(gè)怎么做 ?

編輯 Waza_Be的解決方案:

好吧,這里是根據(jù)Waza_Be我修改的功能。 這個(gè)問題似乎是,它等待300毫秒(在我的情況)......但我有幾個(gè)postDelay功能 - 因此,我認(rèn)為它實(shí)際上是排隊(duì)的所有功能于一體,與300毫秒的等待期是有些重疊。 這一時(shí)期結(jié)束后,所有的代碼運(yùn)行起來一次,使得它毫無意義。

當(dāng)我嘗試這樣做,閃光燈閃爍而迅速,不與微妙的停頓和閃爍效果我想要的。

public void sos(View v) {

String myString = "111000111";

Handler handler = new Handler();

for (int x = 0; x < myString.length(); x++) {

if (myString.charAt(x) == '1') {

handler.postDelayed(new Runnable() {

public void run() {

p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

c.setParameters(p);

c.startPreview();

}

}, 300);

} else {

handler.postDelayed(new Runnable() {

public void run() {

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

}

}, 300);

}

handler.postDelayed(new Runnable() {

public void run() {

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

}

}, 300);

}

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

}

}

我需要單獨(dú)暫停。 后或每TURN_ON或TURN_OFF為Flash之前說。 在每一個(gè)循環(huán)中,應(yīng)該單獨(dú)地等待在處理程序中運(yùn)行每一段代碼()。

總結(jié)

以上是生活随笔為你收集整理的android光传感实现摩斯密码,根据莫尔斯代码 - Android的闪烁闪光。 如何避免ANR次数由于睡觉? (火炬APP)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。