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 ဖိုင္ကို ေဒါင္းလုပ္ လုပ္ပါ၊ 


ပီးရင္ 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


ref;BrighterMyanmar 
brightermyanmar@gmail.com 
--------------------------------------
ကိုမ်ဳိး(lwanmapyay.blogspot.com) လြမ္းမေျပ သုတရပ္၀န္း | Facebook

ဆက်စပ်ဖတ်ရှုရန် အကြောင်းအရာများ...