เรียนรู้ การใช้งาน LogCat เพื่อหา error by kisda
Aug0
การโค้ดแอนดรอยด์ หรือ โปรแกรมใดๆ กับ error ผมว่าเป็นของคู่กันนะ ถ้าเราสามารถหา Error , เหตุผลของการ error ได้ การแก้ปัญหา Error ก็ไม่ใช่เรื่องยากถ้าเป็นใน eclipse แต่ที่เราจะพูดกันในวันนี้คือ Unity เวลา run ในเครื่องจริง(Android) ที่เรามีเครื่องมือในการค้นหา ข้อผิดผลาด Error ที่ชื่อว่า LogCat เอาไว้ค้นหา Error และ เหตุผมของการ Error
C:\>cd AndroidSDK\platform-tools C:\AndroidSDK\platform-tools\> adb.exe logcat
STEP 1:
เปิด Terminal window(ก็ cmd.exe นั้นและ)
STEP 2:
C:\>cd AndroidSDK\platform-tools อันนี้ก็แล้วแต่เครื่องใครลงไว้ที่ไหนนะครับ
STEP 3:
C:\AndroidSDK\platform-tools\>adb logcat -s Unity
การเขียน Log ในแอป
ในการเขียนแอป การทราบว่า ตอนนี้แอนเราทำงานไปถึง ขั้นไหนแล้ว เพื่อการ Monitor การทำงานของแอป การเขียน Log ลงไปในโค้ดจึงมีความจำเป็น
ก็ใน c# ก็ Debug.Log (“OnClickToggleFemale”); หรือ Debug.Log (“Test ” , “OnClickToggleFemale”); ครับยังไงก็ลองเอาไปเล่นกันดูนะครับ
(English) DontDestroyOnLoad by kisda
Jul0
static void DontDestroyOnLoad(Object target);
Description
ทำให้เป้าหมายของ Game Object ที่ไม่ถูกทำลายโดยอัตโนมัติเมื่อโหลดฉากใหม่
จากการทดลอง เวลาเรา load Screen ใหม่แล้วเราต้องการเก็บ ข้อมูลบางอย่างไว้ หรือ Game Manager ก็ควรใช้คำสังนี้ครับ
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void Awake() {
DontDestroyOnLoad(transform.gameObject);
}
}
AsyncTask คืออะไร? by kisda
Jun0
AsyncTask
นั้นเป็น abstract class ที่ทาง Android นั้นจัดเตรียมมาให้เราเพื่อทำการประมวลผล หรือทำงานเป็น background โดยไม่ต้องไปยุ่งกับตัว UI หลัก อย่างเช่น กรณีต้องการดึง content จากเว็บไซต์เว็บหนึ่ง เพื่อมาแสดงบนแอพพลิเคชันของเรา เราก็จะใช้ AsyncTask
ช่วยในการคำนวณ ประมวลผล โดยเมื่อ AsyncTask ทำงานอยู่ มันจะไม่กระทบกับหน้าจอ UI ของเรา
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { protected Long doInBackground(URL... urls) { int count = urls.length; long totalSize = 0; for (int i = 0; i < count; i++) { totalSize += Downloader.downloadFile(urls[i]); publishProgress((int) ((i / (float) count) * 100)); // Escape early if cancel() is called if (isCancelled()) break; } return totalSize; } protected void onProgressUpdate(Integer... progress) { setProgressPercent(progress[0]); } protected void onPostExecute(Long result) { showDialog("Downloaded " + result + " bytes"); } }
การเรียกใช้งานก็แสนง้ายครับ new DownloadFilesTask().execute(url1, url2, url3);
The 4 steps
หลังจากเราทำการ executed แล้ว task จะทำงาน 4 steps ตามนี้ครับ
1. onPreExecute() <<<< อันนี้เอาไว้ invoked UI ก่อนที่จะเริ่ม executed ส่วนมากก็เอาไว้ setup ui ต่าง ex progressbar
2.doInBackground(Params…) <<<<< หลังจากที่ onPreExecute() ทำงานเสร็จก็จะมาทำงานตรงนี้และครับ ตรงนี้เอาไว้ติดต่อกับ internet ครับ จะทำจนกว่าจะเสร้จถ้าเราทำการ load file ครับ
3.onProgressUpdate(Progress…) <<<< หากมีการเรียกใช้งานก็จะเอาไว้ทำการ update ค่าต่างๆครับ ว่า load ได้ขนาดไหนแล้ว กี่ byte หรือกี่ % แล้ว อันนี้ต้องเขียน code ไว้ตรงนี้นะครับ
4.onPostExecute(Result) <<<< หลังจาก doInBackground(Params…) ทำงานเสร็จ onPostExecute(Result) ก็จะถูกเรียกครับ คือหลังจาก เรา load file เสร็จแล้วจะให้ทำอะไรต่อนั้นและครับ
ถามว่าจำเป็นยังไงก็บอกได้เลยครับว่าจำเป็นมาก เพราะถ้าเราทำงานติดต่อผ่าน internet แล้วละก็ไม่ทำงานผ่าน
thread or asynctask แล้วละก็ GC ของ android จะมาเก้บ activity ของเราครับ แต่ถ้าผมจำไม่ผิดตั้งแต่มีการ up api 4.0 เค้าบังคับว่าต้องใช้งานแล้วครับ วันนี้พอก่อนแล้วกันครับ วันหลังมาต่อเรื่องอื่นกัน
android is not safe by kisda
Apr0
ทำไมผมถึงพูดอย่างนี้ถูกไหมครับ เพราะเพื่อนหลายคนที่ใช้งาน android อยู่มักจะหา app lock หน้าจอมาใช้งานกันแต่ก็นั้นและครับ มันไม่ save
วันนี้จะมี command ง้ายๆมาบอกต่อเกียวกับการลบ app ก็เหมือนเดิมครับ
เสียบสาย usb เข้าโทรสับ
เปิด adb แล้วพิม cmd ต่อไปนี้ได้เลยครับ
adb shell am start -a android.intent.action.DELETE -d package:
(English) How can I connect to Android with ADB over TCP? by kisda
Apr1
คิดว่าหลายๆคนที่ใช้งานเครื่อง macbook เอามาเขียนโปรแกรมคงเจอปัญหากับ port usb ไม่พอให้ใช้งาน ก็อยุ่แล้วละพี่แกให้มา 3 port เอง
= =” เวลาเราจะทำการ test android device ก็จะไม่พอถ้าไม่ถอด mouse ก็ต้องถอด keyboard วันนี้ก็เลยมาแนะนำ trick นิดๆหน่อยเกียวกับ การ debug adb with wifi
เอาละครับมาเริ่มกันเลยดีกว่า ก็ลง
1. open console cmd.exe (mac open terminal)
2. cd android-sdk-windows\tools\platform-tools
3.type adb connect ”android ip”:5555
ถ้าเกิดไม่ error device not found ขึ้นก็แสดงว่าเรายังไม่ได้ทำการเปิด port ให้เปิด port ก่อนครับ
setprop service.adb.tcp.port 5555
stop adbd
start adbd
adb connect ”android ip”:5555
เท่านี้เราก็สามารถทำการ debug ผ่าน wifi ได้แล้วละครับ แต่ก็ยังต้องเสียบสาย usb ตอนเรา key command ก่อนนะครับ