!#$%!'$()*+%$,!-.$%#/0.&%!#JollenChenEmail#jollen@jollen.org$%ߚ'2(2%()),18:30~21:30$*+#,-./012B1345Blog#://:8:'9(9%;&)=?@A(Moko365Inc)BCD2009'EFGH=3GI5JEKCK&LAndroidMNOPLQHRSTUVWJXYZ[!\]^_`[abcdefghXiNEjklNAndroidfmnoLinuxXpZqrELQTUstXAuvw]^\=3GI5xyzD{C|}~XHRSTUAu]^J\!#$%&'()*+,(-,./99:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk! 9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk!!9:8:'9(9%;&)!#$%!'$()*+%$,!!$01&.*0./$*9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk:9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk!!!!!!899:8:'9(9%;&)'$()*+%$,!'*(./$*289:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk 9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk!!!!1289:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk{privatestaticfinalStringTAG=SystemServer;nativepublicstaticvoidinit1(String[]args);publicstaticvoidmain(String[]args){System.loadLibrary(android_servers);init1(args);}publicstaticfinalvoidinit2(){Log.i(TAG,EnteredtheAndroidsystemserver!);Threadthr=newServerThread();thr.setName(android.server.ServerThread);thr.start();}}89:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk{...publicstaticfinalvoidinit2(){Log.i(TAG,EnteredtheAndroidsystemserver!);Threadthr=newServerThread();thr.setName(android.server.ServerThread);thr.start();}...}classServerThreadextendsThread{...publicvoidrun(){...HardwareServicehardware=null;...Log.i(TAG,StartingHardwareService.);hardware=newHardwareService(context);ServiceManager.addService(hardware,hardware);...}...}89:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk!!9:9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk!!!989:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk!!!!VMProcessComponentMainThread999:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk 9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk!!SystemServerLauncherTouchstartActivity()99:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk!!99:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);SensorManagersensor=(SensorManager)getSystemService(SENSOR_SERVICE);sensor.getSensors();WifiManagerwifi=(WifiManager)getSystemService(WIFI_SERVICE);}}99:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk9:8:'9(9%;&)AndroidFrameworkIntroduction#,-012Copyright(C)2009Jollen!sConsultingqrjk[]={{_init,!()Z,!!!(void*)mokoid_init},{_set_on,(I)Z,(void*)mokoid_setOn},{_set_off,(I)Z,(void*)mokoid_setOff},};:9:8:'9(9%;&)AndroidFrame