Wednesday, February 12, 2014

IMEI အကြောင်း





















IMEI (international Mobile Equipment Identity)  ဆိုတာ ဖုန်းတစ်လုံးစီရဲ့ သီးသန့် နံပါတ်ပါ၊ လူတွေရဲ့ 
မှတ်ပုံတင်နံပါတ်လိုပါပဲ၊ ဒါပေမယ့် တစ်ချို့က ဂဏန်း ၁၇ လုံးလဲရှိပါတယ်၊ ဖုန်းတစ်လုံးကို ပျောက်ဆုံး သည်ဖြစ်စေ အခိုးခံရသည်ဖြစ်စေ ဖုန်းဘယ်နေရာမှာ
ရှိလဲဆိုတာကို ခြေရာခံဖို့ ပြန်ရှာဖို့ အတွက် IMEI ကိုသုံးပါတယ်၊ SIM card ကို မသုံးရခြင်း ကတော့ SIM card က ဖျေက်ရလွယ်ထုတ်ရလွယ်လို့ပါ၊
nv_data.bin ဖိုင် ပြသနာ တက်ရင် IMEI နံပါတ် အတုပြောင်းသွား တတ်သလို ပျက်သွားတတ်ပါတယ်၊  အခြား ပြသနာတွေကြောင့်လဲဖြစ်နိုင်ပါတယ်၊ ဒီမှာတော့  သိသလောက်ပဲပြောသွားမယ်၊



ပထမ ဂဏန်း ၁၄ လုံးက GSM association က သတ်မှတ်ပီးတော့ ၊ 
နောက်ဆုံး ဂဏန်း တစ်လုံးကတော့ Luhn Formula
သုံးပီးတွက်ထားပါတယ်၊ base-8 Math ကိုသုံးပီးတွက်ထားပါတယ်၊

IMEI ကိုရှာတွေ့နိုင်တဲ့ နေရာတွေ အကြောင်း
IMEI ကိုရှာနိုင်တဲ့ နည်းလမ်းတွေအများကြီးရှိပါတယ်၊
အလွယ်ရှာနိုင်တဲ့ နေရာတွေကတော့ ဖုန်
setting ထဲက about မှာရှာနိုင်သလို ၊
Battery မှာလဲ ပါတယ်၊ ဖုန်းဝယ်တုန်းက
ဖုန်းထည့်တဲ့ သတ္တာမှာလဲ တွေ့နိုင်တယ်၊
ဖုန်းမှာ *#06# ကိုနှိပ်ပီးလဲရှာနိုင်ပါတယ်၊

IMEI နံပါတ်တွေကို ဘယ်လို အချိန်မှာ အသုံးပြုလဲ
Network ကိုထိန်းချုပ်ဖို့ အတွက် IMEI ကိုသုံးပါတယ်၊ Mobile Operator တွေကို IMEI နံပါတ်တွေကိုသုံးပီးတော့ ဖုန်းကို လှမ်းပိတ်နိုင်ပါတယ်၊ အထူးသဖြင့် ဖုန်းအခိုးခံရတဲ့ အခါမျိုးမှာပါ၊ ရာဇဝတ်မှူနဲ့ စက်ဆက်တဲ့ လူတွေရဲ့ ဖုန်းနံပါတ်တွေကိုလဲ ခြေရာခံဖို့ အတွက်လဲသုံးကြပါတယ်၊ ဒီလိုသုံးဖို့ Phone Database တည်ဆောက်သွားရမှာဖြစ်ပါတယ်၊
IMEI အပြောင်းအလဲ
များမကြာမှီ ကာလအပိုင်းအခြားမှာ GSM Association တွေက IMEI ဂဏန်းတွေကို IMEISV နံပါတ်တွေနဲ့ ပြောင်းသုံးသွားကြမှာပါ၊ IMEI နဲ့ IMEISV တို့ ရဲ့ အသုံးပြုမယ့် လိုအပ်ချက်တူပေမယ့် ဂဏန်း တွက်ချက်မူ စနစ်တော့ကွာသွားပါလိမ့်မယ်၊ IMEISV မှာတော့ Luhn Formula သုံးပီး ဂဏန်း တွက်တဲ့ စနစ်ကိုပြောင်းပီး Software version နံပါတ် နှစ်လုံးကိုသုံးသွားပါလိမ့်မယ်၊
IMEI Number တွေကို Application ရေးပီးရှာမယ်

အရင်ဆုံး Eclipse project တစ်ခုကိုတည်ဆောက်လိုက်ပါ၊
XML ဖိုင်ထဲမှာ activity Layout ကို Linear Layout ပြောင်းလိုက်ပါ၊ (မပြောင်းလဲ ကိစ္စမရှိဘူး) ၊ TextView တစ်ခုထည့်ပါ၊ TextView ရဲ့ ID ကို tvIMEI လို့ပေးလိုက်ပါ၊ အောက်က အတိုင်း၊
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Main" >
<TextView
android:id="@+id/tvIMEI"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>


Main.java ဖိုင်ကိုတည်ဆောက်ပီး Activity ကို Extends လုပ်ပါ၊ ပီးရင် Extends လုပ်ထားတဲ့ Activity ကို override လုပ်ဖို့ OnCreate Method ကို ရေးလိုက်ပါ၊ Parameter ထဲမှာ Data သိမ်းစည်းခြင်း သယ်ဆောင်ခြင်းလုပ်နိုင် Data Transfer လုပ်နိုင်တဲ့ Bundle Class အတွက် Object တစ်ခုတည်ဆောက်ပါ၊ OnCreate Method က Main Class ပေါ်မှာ စတင်အလုပ်လုပ်တာနဲ့ Bundle Class ရဲ့ Object ဖြစ်တဲ့ BM ကို အလုပ်စခိုင်းပါ၊ နောက်တစ်ဆင့်မှာ XML Layout ဖြစ်တဲ့ activity.xml ကို Main Class ရဲ့ Content အဖြစ်သတ်မှတ်ပေးပါ၊ လိုအပ်တဲ့ Bundle Package နဲ့ Activity package (Class) တွေကို Import လုပ်ပေးပါ၊ အောက်က အတိုင်း

package com.BM.getimei;
import android.os.Bundle;
import android.app.Activity;
public class Main extends Activity {
protected void onCreate(Bundle BM) {
super.onCreate(BM);
setContentView(R.layout.activity);
}
}
နောက်တစ်ဆင့်မှာ xml layout ဖိုင်ဖြစ်တဲ့ activity layout file ထဲက TextView ကို Refrences လုပ်ပေးပီး deviceIMEI ဆိုတဲ့ Variable တန်ဖိုး အဖြစ် Assign လုပ်ပါ၊ TextView ကို Java ဖိုင်မှာသုံးပီဖြစ်တဲ့ အတွက် Android Library ဖိုင်ထဲရှိ widget နဲ့ ပက်သက်တဲ့ အုပ်စုထဲက TextView Class ကို import လုပ်ပါ၊ အသုံးပြုတဲ့ Java Version နဲ့ ပက်သက်တဲ့ Library တွေကိုရှင်းရှင်းလင်းလင်းနားလည်ဖို့က Developer တွေအတွက် အရေး ကြီးပါတယ်၊ အားလုံးပီးရင်အောက်က အတိုင်း ဖိုင်ကိုရမယ်၊

package com.BM.getimei;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;

public class Main extends Activity {
protected void onCreate(Bundle BM) {
super.onCreate(BM);
setContentView(R.layout.activity);
TextView deviceIMEI = (TextView)findViewById(R.id.tvIMEI);
}
}

နောက်တစ်ဆင့် မှာတော့ TelephonyManager Class ရဲ့ Instance Object အဖြစ် telemanage ကိုတည်ဆောက်ပီး System service ထဲက TELEPHONY_SERVICE ကိုရယူလို့ရတဲ့ တန်ဖိုး အဖြစ် Assign (သတ်မှတ်) ပါ၊ နောက်တစ်ဆင့်မှာ TextView ရဲ့ Object ဖြစ်တဲ့ deviceIMEI မှာရှိတဲ့ Text ကို ပြောင်းပေးပါ၊ ပြောင်းတဲ့ အခါ setText() Method ကိုသုံးပီးပြောင်းပါ၊ setText Method ရဲ့ parameter ထဲမှာ BMgetIMEI() Method ကိုတည်ဆောက်ပီး Parameter ထဲမှာ TelephonyManager Object ကိုထည့်ပေးလိုက်ပါ၊ အောက်က အတိုင်း

TelephonyManager telemanage = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
deviceIMEI.setText(BMgetIMEI(telemanage));
BMgetIMEI Method မတည်ဆောက်ရသေးတွက် အတွက် onCreate Method အောက်မှာတည်ဆောက်လိုက်ပါ၊ return တန်ဖိုး တွေကို String အနေနဲ့ ပြန်ပေးမှာဖြစ်လို့ BMgetIMEI Method ရဲ့ Return Data Type ကို String ထားပေးရပါမယ်၊ Parameter ထဲမှာပါမယ့် TelephnyManage ရယူပီး String Object တစ်ခုရဲ့ တန်ဖိုး အဖြစ် Assign လုပ်ပေးပါ၊ ရလာတဲ့ တန်ဖိုးက ဗလာတန်ဖိုးဟုတ်မဟုတ် စစ်ဆေးပါ၊ ဗလာဖြစ်နေရင် Not available အဖြေ ကို id တန်ဖိုး အဖြစ် Assign လုပ်ပါ၊ ပီးရင် PhoneType() ကိုရယူပီး Integer DataType Variable တစ်ခုထဲ Assign လုပ်ပေးပါ၊ ပီးရင် Switch Statement နဲ့ စစ်ပါ၊ အကယ်၍ TelophonyManager ကရလာမယ့် PHONE_TYPE က ဗလာလား၊ GSM လား CDMA လားစစ်ပါ၊ ပီးရင် id နဲ့ တွဲပီးရလာတဲ့ အဖြေကို return လုပ်ပေးပါ၊ return လုပ်လိုက်တဲ့တန်ဖိုးက BMgetIMEI Method ကိုခေါ်တဲ့ သူကိုပြန်ပေးလိမ့်မယ်၊ အောက်က အတိုင်း
int phoneType = phonyBM.getPhoneType();
switch(phoneType){
case TelephonyManager.PHONE_TYPE_NONE:
return "NONE: " + id;

case TelephonyManager.PHONE_TYPE_GSM:
return "GSM: IMEI=" + id;

case TelephonyManager.PHONE_TYPE_CDMA:
return "CDMA: MEID/ESN=" + id;

default:
return "UNKNOWN: ID=" + id;
}
}
ပီးရင် AndroidManifest ဖိုင်ကိုဖွင့်ပီး READ_PHONE_STATE သုံးခွင့်တောင်းတဲ့ User Permession ကိုထည့်ပါ၊ အောက်က အတိုင်း <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

အားလုံးပီးရင် apk ဖိုင်အဖြစ် Export ထုတ်ပါ၊ Run ကြည့်ရင် IMEI Number နဲ့ Radio အမျိုး အစား ရမယ်၊
ရေးထားတဲ့ Java Code ကို ဥပမာ ကြည့်ချင်ရင် xml ကုတ်ပါတဲ့ဖိုင်ကို အောက်က လင့်မှာဒေါင်းလုပ်လုပ်နိုင်ပါတယ်

http://goo.gl/JQn9iR


Java ဖိုင်ကိုအောက်က လင့်မှာဒေါင်းလုပ်လုပ်နိုင်ပါတယ်
http://goo.gl/tSS7Av


Apk ဖိုင်ကိုအောက်က လင့်မှာဒေါင်းလုပ်ရယူနိုင်ပါတယ်

http://goo.gl/DI7clw



IMEI နံပါတ်ကို ဘယ်လိုပြန်ရေးမလဲ၊
Emulator က IMEI ကို အရင်ပြောင်းကြည့်ကြမယ်၊ အရင်ဆုံး အောက်က လင့်က zip ဖိုင်ကိုဒေါင်းလုပ်လုပ်ပါ၊

http://goo.gl/yaID1T

ပီးရင် zip ဖိုင်ဖြေလိုက်၊ ဒါဆိုရင် ဖိုဒါတစ်ခုရလာမယ် အဲ့ဒီ ဖိုဒါထဲဝင်ပီး XVI32.exe application ကို Run ပါ၊ ဒါဆိုရင် XVI32 application ပွင့်လာမယ်၊ XVI32 ကနေ Android SDK ထဲရှိ tools ထဲက emulator-arm.exe ဖိုင်ကိုလှမ်းဖွင့်ပါ၊ ရလာတဲ့ Emulator ဖိုင်ထဲက ကနေ CGSM ကိုနှိပ်ပီးရှာပါ၊ ရှာရခက်ရင် Ctrl+F နှိပ်ပီးရှာပါ၊ ဒါဆိုရင် CGSM စာလုံးကိုတွေ့မယ် အဲ့ဒီ့စာလုံးနောက်က ဂဏန်း 15 လုံးကို ပြောင်းလိုက်ပါ၊ ပီးရင် သိမ်းလိုက်၊ ဒါ IMEI နံပါတ်ပြောင်းတာပါပဲ၊ ပြောင်းနေတဲ့ အခါမျာ emulator ကိုပိတ်ထားဖို့လိုအပ်တယ်၊ ပြောင်းပီးရင် emulator ကိုပြန်ဖွင့်ကြည့်ပါ၊ * # 0 6 # နှိပ်ပါ၊ ဒါဆိုရင်ပြောင်းလိုက်တဲ့ IMEI နံပါတ်ကို တွေ့ရမယ်၊
ဖုန်းတွေအတွက် IMEI ကိုဘယ်လိုရေးမလဲ

1. QPST version 2.7 build 323 ကို ဒေါင်းလုပ်လုပ်ပါ၊
2. ဖုန်းကို Root လုပ်ထားဖို့လိုတယ်၊
3. ဖုန်းရဲ့ နောက်က Battery မှာပါတဲ့ IMEI နံပါတ်ကိုရေးချပါ၊ (အခြားနေရာတွေလဲရှာတွေ့နိုင်တယ် ကြိုက်တဲ့နေရာက ရှာ IMEI နံပါတ်ဖြစ်ဖို့လိုတယ်)၊
4. ဖုန်းကို ဖွင့်လိုက်ပါ၊
5. ဖုန်း key ကိုဖွင့်ပီး *#22745927 ဖျောက်ထားတဲ့ ဖိုဒါတွေကိုဖွင့်ပါ၊ (ဖျောက်ထားတဲ့ ဖိုဒါတွေ Menu တွေကို ပြန်ဖော်တာ ဖုန်းအမျိုးအစား တစ်မျိုး နဲ့ တစ်မျိုး မတူဘူး)၊
6. keypad ကိုပြန်ဖွင့်ပီး *#7284# ကို နှိပ်ပီး ပေါ်လာမယ့် menu### ကနေ Qualcomm USB Setting ကိုရွေးပါ၊ ပေါ်လာမယ့် Menu ကနေ RMNET + DM + MODEM ကို ရွေးပီး Ok ကိုနှိပ်ပါ၊
7. ကွန်ပြူတာကိုဖွင့်ပီး Device Manager ကိုဖွင့်ပါ၊
8. Ports (COM & LPT) တို့ကိုရွေးပီး ဖိုင်ချဲ့ထုတ်ပါ၊ Mobile Brand နဲ့ USB Serial Port (COM10) ဆိုတဲ့ နာပါတ်ကိုမှတ်ပါ၊ COM နောက်က နံပါတ်က တူချင်မှတူမယ်၊ ကိုယ့်နံပါတ်ကိုရွေး၊
9. QPST ကိုဖွင့်ပါ၊
10. Ports ကိုရွေးပီး new port ကို Add (ထည့်ပါ)၊
11. Port နှစ်ခုလုံးကို Port ကော Port Label ထဲကောထည့်ပါ၊
12. QPST မှာ Clients ကော RF NV Item Manager ကောကို Select မှတ်ပါ၊
13. RF NV Item Manager ထဲကနေ Settings ကိုသွားပါ၊ ပီးရင် Comport ကိုရွေးပါ၊
14. File Tab အောက်က Read Supported NV RF Items တွေကိုရွေးပါ၊
15. DropDown Menu ကနေ ကိုယ့်ရဲ့ ဖုန်း port ကိုရွေးပီး Ok နှိပ်ပါ၊
16. File အောက်က Read Support NV RF Items ကိုရွေးပါ၊
17. Items List ထဲက 550 နံပါတ်ကိုရွေးပါ၊
ဒါဆိုရင် text ထည့်တဲ့ field 9 ခုကိုတွေ့လိမ့်မယ်၊ ဒီနေရာမှာ IMEI ကိုထည့်ရမှာ၊ IMEI နံပါတ်တွေကို စီထားတဲ့ ပုံက တကယ့်ကို အံ့သြဖို့ကောင်းပါတယ်၊ မတွေ့ကြုံဖူးဘဲ လုပ်ရင် အမှားတွေ့သွားနိုင်တယ်၊ ဒီတော့ အောက်က ပြောတဲ့ အတိုင်း အတိအကျလုပ်ပါ၊
အရင်ဆုံး Hexardecimal (Hex) အကွက်မှာ အမှတ်ခြစ်ထားပါ၊
ဥပမာ ပြန်ရေးချင်တဲ့ IMEI နံပါတ်က 954091051099226 လို့ဆိုကြပါစို့၊ ရေးတဲ့ အခါ စုံလိုက်ပြောင်းပြန်ပြန်ရေးရတယ်၊ ပထမနဲ့ ဒုတိယ က နဲနဲထူးတယ်၊
ပထမဆုံး text ထည့်မယ့် အကွက်ထဲမှာ 8 ကိုရေးထည့်ပါ၊
ဒုတိယ အကွက်ထဲမှာ 9a ကိုရေးထည့်ပါ၊ a က နောက်ဆုံးစာလုံးကိုညွန်းပါတယ်၊
နောက်ထက် text box ထဲမှာ 45 ကိုရေးထည့်၊ အမှန်က 54 လာတယ်၊ ဒါပေမယ့် ရေးတဲ့ အခါ စုံလိုက်ပြောင်းပြန်ရေးရမှာဖြစ်တဲ့ အတွက် 45 လို့ ရေးထည့်၊
နောက်ထက် text box ထဲမှာ 90 ကိုရေးထည့်၊ အမှန်က 09 လာတယ်၊ ဒါပေမယ့် ရေးတဲ့ အခါ စုံလိုက်ပြောင်းပြန်ရေးရမှာဖြစ်တဲ့ အတွက် 90 လို့ ရေးထည့်၊
နောက်ထက် text box ထဲမှာ 01 ကိုရေးထည့်၊ အမှန်က 10 လာတယ်၊ ဒါပေမယ့် ရေးတဲ့ အခါ စုံလိုက်ပြောင်းပြန်ရေးရမှာဖြစ်တဲ့ အတွက် 01 လို့ ရေးထည့်၊
နောက်ထက် text box ထဲမှာ 15 ကိုရေးထည့်၊ အမှန်က 51 လာတယ်၊ ဒါပေမယ့် ရေးတဲ့ အခါ စုံလိုက်ပြောင်းပြန်ရေးရမှာဖြစ်တဲ့ အတွက် 15 လို့ ရေးထည့်၊
နောက်ထက် text box ထဲမှာ 90 ကိုရေးထည့်၊ အမှန်က 09 လာတယ်၊ ဒါပေမယ့် ရေးတဲ့ အခါ စုံလိုက်ပြောင်းပြန်ရေးရမှာဖြစ်တဲ့ အတွက် 90 လို့ ရေးထည့်၊
နောက်ထက် text box ထဲမှာ 29 ကိုရေးထည့်၊ အမှန်က 92 လာတယ်၊ ဒါပေမယ့် ရေးတဲ့ အခါ စုံလိုက်ပြောင်းပြန်ရေးရမှာဖြစ်တဲ့ အတွက် 29 လို့ ရေးထည့်၊
နောက်ထက် text box ထဲမှာ 62 ကိုရေးထည့်၊ အမှန်က 26 လာတယ်၊ ဒါပေမယ့် ရေးတဲ့ အခါ စုံလိုက်ပြောင်းပြန်ရေးရမှာဖြစ်တဲ့ အတွက် 62 လို့ ရေးထည့်၊
အားလုံးရေးပီးရင် Write NV ကိုတစ်ချက်နှိပ်လိုက်၊ Phone ကို Reboot လုပ်ပါ၊ MTP + ADB mode ကိုပြန်ရောက်အောင် *7284# ကို ပြန်နှိပ်ပါ၊
အကယ်၍ COM & LPT ကိုရှာရခက်နေတယ်ဆိုရင်တော့ cmd ကနေ hdwwiz.exe ကိုရိုက်ဖွင့်ပါ၊ Hardware Wizard ကိုသွားဖို့၊ ရောက်ရင် Next ကိုနှိပ်ပီး နောက်စာမျက်နှာမှာ Install the hardware that i manually select from a list(Advance) ပါတဲ့ Radio Button မှာ Check လုပ်ပီး Next ကိုနှိပ်ပါ၊ Ports(COM & LPT ) ကိုရှာပီး ရွေးပါ၊ ပီးရင် Next နှိပ်ပီးရွေးပါ၊ ဒါဆို IMEI ပြောင်းပီးပီ
ADB အတွက် Android SDK(software development Kit ) ကိုသုံး Phone အတွက် Terminal ကိုသုံးပီး IMEI
ဖုန်းကို Root လုပ်ထားဖို့လိုတယ်၊ Root Explorer ကိုသုံးပီး EFS ဖိုဒါထဲက imei ဖိုဒါကို imei ဖိုင်ကို ပြန်ယူနိုင်ပါတယ်၊

၀န်ခံချက်
ဒီပိုစ့်မှာပါတဲ့ Java Code တွေအားလုံးက Brighter Myanmar က develop လုပ်ထားတာဖြစ်ပီး အောက်ပိုင်းက ဖုန်း IMEI ပြောင်းတဲ့ အပိုင်းကို Brighter Myanmar က Peoplearmy အဖွဲ့ကနေ လေ့လာထားတာပါ၊ ဒီပိုစ့်က ပြည့်စုံခြင်း မရှိသေးပါဘူး၊ နောက်ပိုင်း အားရင်အားသလိုပြန်ရေးပေးပါမယ်၊

ဒီပိုုစ့်ကိုု pdf ဖိုုင် အဖြစ် ဒေါင်းလုုဒ်လုုပ်လိုု ပါက အောက်ပါ လင့်တွင်း ဒေါင်းလုုပ်ရယူနုုိင်ပါသည်

http://goo.gl/oSykxQ

ကျေးဇူးပြု၍
ဒီပို့စ်ကို BrighterMyanmar အဖွဲ့ ရေးတာဖြစ်ပီး အကယ်၍ ပို့စ် မှာ အမှား ပါနေတာတွေ့ရင် ကျေးဇူးပြုပြီး brightermyanmar@gmail.com ကို ကြောင်းကြားပေးပါခင်ဗျာ၊ ကျွန်တော်တို့ သေချာ ပြန်စီစစ်ပီး ပြင်ပါ့မယ်၊


Posted By

<<  HTAR WAIE THAR  >>

Ko Ko Zaw ( BE-EC )     www.htarwaiethar.blogspot.com

0 comments:

Post a Comment