找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4045|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Android程序開發(fā)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:60266 發(fā)表于 2014-8-18 01:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
開發(fā)環(huán)境: eclipse-jee-juno-SR1-win32.zip         【JDK 1.6】jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe
          installer_r20.0.3-windows【android sdk 升級下載包】
1:建立工程
      Java是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言(以下簡稱Java語言)和Java平臺的總稱。由四方面組成:Java編程語言、Java類文件格式、Java虛擬機和Java應(yīng)用程序接口(Java API)。
     Java平臺Java虛擬機(Java Virtual Machine,簡稱JVM)和Java 應(yīng)用編程接口(Application Programming Interface,簡稱API)構(gòu)成。Java 應(yīng)用編程接口為Java應(yīng)用提供了一個獨立于操作系統(tǒng)的標準接口,可分為基本部分和擴展部分。在硬件或操作系統(tǒng)平臺上安裝一個Java平臺之后,Java應(yīng)用程序就可運行。現(xiàn)在Java平臺已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運行。Java應(yīng)用編程接口已經(jīng)從1.1x版發(fā)展到1.2版。目前常用的Java平臺基于Java1.4,最近版本為Java1.7。
     Java虛擬機(Java Virtual Machine 簡稱JVM)是運行所有Java程序的抽象計算機,是Java語言的運行環(huán)境,它是Java 最具吸引力的特性之一。Java虛擬機(JVM)一種用于計算機設(shè)備的規(guī)范,可用不同的方式(軟件或硬件)加以實現(xiàn)。編譯虛擬機的指令集與編譯微處理器的指令集非常類似。Java虛擬機包括一套字節(jié)碼指令集、一組寄存器、一個棧、一個垃圾回收堆和一個存儲方法域。Java虛擬機(JVM)是可運行Java代碼的假想計算機。只要根據(jù)JVM規(guī)格描述將解釋器移植到特定的計算機上,就能保證經(jīng)過編譯的任何Java代碼能夠在該系統(tǒng)上運行。Java虛擬機是一個想象中的機器,在實際的計算機上通過軟件模擬來實現(xiàn)。Java虛擬機有自己想象中的硬件,如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。ava語言的一個非常重要的特點就是與平臺的無關(guān)性。而使用Java虛擬機是實現(xiàn)這一特點的關(guān)鍵。一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機后,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用模式Java虛擬機屏蔽了與具體平臺相關(guān)的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節(jié)碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執(zhí)行字節(jié)碼時,把字節(jié)碼解釋成具體平臺上的機器指令執(zhí)行。



    許多公司都開發(fā)了自己的中間件,但其與用戶的溝通都各有不同,從而導(dǎo)致用戶無法將各個公司不同的中間件組裝在一塊為自己服務(wù)。從而產(chǎn)生瓶頸。于是提出標準的概念。其實J2EE就是基于JAVA技術(shù)的一系列標準
    注:中間件的解釋 中間件處在操作系統(tǒng)和更高一級應(yīng)用程序之間。它充當?shù)墓δ苁牵簩?yīng)用程序運行環(huán)境與操作系統(tǒng)隔離,從而實現(xiàn)應(yīng)用程序開發(fā)者不必為更多系統(tǒng)問題憂慮,而直接關(guān)注該應(yīng)用程序在解決問題上的能力。容器的概念就是中間件的一種。
    Sun公司在1998年發(fā)表JDK1.2版本的時候, 使用了新名稱Java 2 Platform,即“Java2平臺”,修改后的JDK稱為Java 2 Platform Software Develping Kit,即J2SDK。并分為標準版(Standard Edition,J2SE), 企業(yè)版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。J2EE便由此誕生。
       2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經(jīng)更名以取消其中的數(shù)字“2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME【差別不是很大】。
    Java分為三個體系JavaSE(Java2 Platform Standard Edition,java平臺標準版),JavaEE(Java 2 Platform,Enterprise Edition,java平臺企業(yè)版),JavaME(Java 2 Platform Micro Edition,java平臺微型版)。
   
Android應(yīng)用程序的概念性描述
   Android應(yīng)用程序包含了工程文件、代碼和各種資源,主要由Java語言編寫,每一個應(yīng)用程序?qū)⒈?strong>編成 Android的一個 Java 應(yīng)用程序包(*.apk)

  由于Android系統(tǒng)本身是基于Linux 操作系統(tǒng),因此Android應(yīng)用程序也運行于Linux 環(huán)境中,它
們具有以下的特點:
??   在默認情況下,每一個應(yīng)用程序運行于它們的Linux 進程中;
??   每個進程具有自己的虛擬機(VM),所以每個應(yīng)用程序運行于獨立的環(huán)境中;
??   在默認情況下,每一個應(yīng)用程序具有唯一的Linux用戶 ID。通過設(shè)置權(quán)限讓應(yīng)用程序只對用戶和應(yīng)用程
序本身可見,也有一些方法可以把它們暴露給其他的應(yīng)用程序。

應(yīng)用程序的組成部分
一般情況下,Android應(yīng)用程序由以下4 種組件構(gòu)成:
??   活動(Activity);
??   廣播接收器(BroadcastReceiver);
??   服務(wù)(Service );
??   內(nèi)容提供者(Content Provider )。
一個Android應(yīng)用程序是一個包(Package),包中可能包含一個或者多個Android組件(component )
(1)活動(Activity)
   活動是最基本的Android應(yīng)用程序組件,在應(yīng)用程序中,一個活動通常就是一個單獨的用戶界面每一個
活動都被實現(xiàn)為一個獨立的類,并且從活動(Activity)基類中繼承而來,活動類將會顯示由視圖(View)控 件組成的用戶接口,并對事件(Event)做出響應(yīng)。大多數(shù)的應(yīng)用程序都會有多個用戶界面,因此便會有多個相
應(yīng)的活動。


   Android 的一個活動一般對應(yīng)界面中的一個屏幕顯示,可以理解成一個界面,每一個活動在界面上可以包
含按鈕、文本框等多種可視的UI元素。


(2)廣播接收器(BroadcastReceiver)   
   廣播接收器用于讓應(yīng)用程序?qū)σ粋€外部事件做出響應(yīng)。例如:電話呼入事件、數(shù)據(jù)網(wǎng)絡(luò)可用通知或者到了
晚上時進行通知。
(3)服務(wù)(Service)
一個服務(wù)是一個具有一段較長生命周期但沒有用戶界面的程序。例如:一個正在從播放列表中播放歌曲的
媒體播放器在后臺運行。

(4)內(nèi)容提供者(Content Provider)
應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件或SQLite 數(shù)據(jù)庫中,甚至是任何有效的設(shè)備中。當需要將數(shù)據(jù)與其
他的應(yīng)用共享時,內(nèi)容提供者將會很有用。一個內(nèi)容提供者類實現(xiàn)了一組標準的方法,從而能夠讓其他應(yīng)用程序
保存或讀取此內(nèi)容提供者處理的各種數(shù)據(jù)類型。

應(yīng)用程序的生命周期
(1)前臺(Foreground)進程
(2)可見(Visible )進程
(3)服務(wù)(Service)進程
(4)后臺(Background)進程
(5)空(Empty)進程
(1)前臺(Foreground)進程
   與用戶當前正在做的事情密切相關(guān),不同的應(yīng)用程序組件能夠通過不同的方法使它的宿主進程移到前臺。當下面任何一個條件滿足時,都可以考慮將進程移到前臺。
??   進程正在屏幕的最前端運行一個與用戶交互的Activity(它的 onResume() 方法被調(diào)用);
??   進程有一個正在運行的BroadcastReceiver(它的BroadcastReceiver.onReceive()方法正在執(zhí)行);
??   進程有一個Service ,并且在 Service 的某個方法(Service.onCreate()、Service.onStart() 或者Service.onDestroy())內(nèi)有正在執(zhí)行的代碼。

(2)可見(Visible )進程
   它有一個可以被用戶從屏幕上看到的Activity,但不在前臺——其 onPause()方法被調(diào)用。例如:如果前臺
的Activity是一個對話框,以前的Activity隱藏在對話框之后,就可能出現(xiàn)這種進程。這樣的進程很重要,一
般不允許被殺死,除非為了保證前臺進程的運行不得不這樣做。

(3)服務(wù)(Service)進程
   有一個已經(jīng)用startService()方法啟動的Service,雖然這些進程用戶無法直接看到,但它們做的事情卻是用
戶所關(guān)心的(例如:后臺MP3 回放或后臺網(wǎng)絡(luò)數(shù)據(jù)的上傳/ 下載)。因此,系統(tǒng)將一直運行這些進程,除非內(nèi)
存不足以維持所有的前臺進程和可見進程。

(4)后臺(Background )進程
  擁有一個當前用戶看不到的Activity(它的onStop() 方法被調(diào)用),這些進程對用戶體驗沒有直接的影響。
如果它們正確執(zhí)行了Activity生命周期,系統(tǒng)可以在任意時刻殺死進程來回收內(nèi)存,并提供給前面3 種類型的
進程使用。系統(tǒng)中通常有很多這樣的進程在運行,因此要將這些進程保存在LRU 列表中,以確保當內(nèi)存不足
時用戶最近看到的進程最后一個被殺死。

(5)空(Empty )進程
  不包含任何處于活動狀態(tài)的應(yīng)用程序組件。保留這種進程的唯一原因是,當下次應(yīng)用程序的某個組件需要
運行時,不需要重新創(chuàng)建進程,這樣可以提高啟動速度。


以上所說的“進程”是從系統(tǒng)運行的角度考慮的,各種不同的進程可以理解成Android的各種組件的不同
狀態(tài)機(state machine )。如果從應(yīng)用程序的代碼以及運行情況考慮,可以關(guān)注 Android的各種組件相對應(yīng)的生命周期

1 .  活動的生命周期
2 .  服務(wù)的生命周期
3 .  廣播接收器的生命周期
1 .  活動的生命周期
   活動是Android 中最重要、最基礎(chǔ)的組件,用戶在界面上看到的一個個可以切換的屏幕界面就是Android
中的活動。活動的生命周期如圖1 所示。


??   運行活動的情景:當一個活動被啟動時,活動中的onCreate()、onStart() 和onResume() 這3 個方法被依次調(diào)用,活動對應(yīng)的界面出現(xiàn)在屏幕上。
??   活動被“覆蓋”的情景:Android的活動一般都占據(jù)一個完整的屏幕,從當前活動啟動另外一個活動時,另
一個活動將被啟動到前臺(Foreground ),當前活動轉(zhuǎn)入后臺(Background ),這時活動的 onPasuse()方法將
被調(diào)用,活動轉(zhuǎn)入后臺運行。如果活動變?yōu)椴豢梢�,還將調(diào)用onStop()方法。在轉(zhuǎn)入后臺時,onStop()是否
被調(diào)用取決于活動是否被完全覆蓋,在新的活動有透明部分時,轉(zhuǎn)入后臺的活動依然“可見”,其他情況下
(較多數(shù)的情況)活動均進入不可見狀態(tài)(被完全覆蓋)。
??   活動被恢復(fù)的情景:當界面上最前面的活動退出后,它所覆蓋的活動將被恢復(fù),這時onResume() 方法將被
調(diào)用,活動重新轉(zhuǎn)入前臺運行。
??   活動完全退出的情景:當使用回退(Back)按鈕退出活動時,onDestroy() 方法將被調(diào)用,活動關(guān)閉。如果
系統(tǒng)缺少內(nèi)存時,也會殺死(kill)后臺的活動,其中優(yōu)先殺死不可見的活動,可見的活動一般不會被殺死。

2 .  服務(wù)的生命周期
服務(wù)可以長時間運行,它的特點是沒有可視化界面,服務(wù)的生命周期如圖2 所示

   使用StartService 運行服務(wù)的情景:使用這種方法啟動服務(wù),服務(wù)的onCreate()和onStart() 這兩個方法將被調(diào)用,服務(wù)會在后臺運行直到退出,退出時將調(diào)用onDestroy() 方法。
   使用bindService 運行服務(wù)的情景:使用這種方法啟動服務(wù),調(diào)用者(也就是服務(wù)的客戶端)將獲得和服務(wù)
交互的類,通過其調(diào)用時服務(wù)的相關(guān)內(nèi)容會處于活動狀態(tài)。

3 .  廣播接收器的生命周期
   廣播接收器有一個單一的回調(diào)方法onReceive() ,當廣播消息到達接收器時,Android將調(diào)用這個方法,并
傳遞給包含在這個消息中的Intent  對象。
   廣播接收器只有在這個方法的執(zhí)行過程中才處于活動狀態(tài),當 onReceive() 返回后,廣播接收器將不再處于
活動狀態(tài)。廣播接收器的功能類似于一個回調(diào)函數(shù),只是單次運行時處于活動狀態(tài)。


Android的工程編譯
   在編譯Android應(yīng)用程序的過程中,Java 源代碼使用Sun JDK 將Java 源程序編譯成Java 字節(jié)碼文件(多
個后綴名為.class 的文件),這一步驟和標準的Java 一致,然后通過Android自帶的工具軟件dex 把所有的字
節(jié)碼文件轉(zhuǎn)成dex 文件(單一文件classes.dex )。

    AndroidManifest.xml 文件經(jīng)過Android打包工具(aapt )處理后形成二進制格式 AndroidManifest.xml 文件,實質(zhì)的內(nèi)容與以前相同。
   各個資源文件也經(jīng)過aapt 處理,其中布局等文本文件處理成二進制文件,圖片等文件保持不變。
最后將這三個部分組合成一個應(yīng)用程序包(*.apk)。AndroidManifest.xml 描述文件、Java 源文件、資源文
件是Android應(yīng)用程序的三個部分;在編譯之前的工程中是這三個部分,在編譯之后APK包依然是由這三個部
分組成的。


     如圖所示,Android源文件經(jīng)過了標準的Java 編譯器的編譯,又經(jīng)過了dx工具的處理,標準的Java 字節(jié)
碼作為整個Android編譯的中間過程,最終生成的dex 文件(classes.dex )是一個單一文件,將工程中所有的Java源代碼文件對應(yīng)的字節(jié)碼集成在一起。資源文件和AndroidManifest.xml 文件通過aapt 工具進行處理。
    在運行時,APK包將首先進行“安裝”,也就是將其中的 dex 文件進行優(yōu)化,優(yōu)化后的文件被保存到緩存
區(qū)域,生成格式為 dey 的優(yōu)化文件,然后 Dalvik 虛擬機將運行這些dey 文件。如果應(yīng)用程序包文件不發(fā)生變化,dey 文件不會被重新生成;在應(yīng)用程序包發(fā)生更新的情況下,將重新由dex 生成dey。
    Android和標準 JAVA 開發(fā)的JAR 包最大的不同在于,標準JAVA 字節(jié)碼是每個文件一個Clash文件,而
Android中的一個包將生成一個Dex 文件。


使用am工具啟動Android 應(yīng)用程序
  除了在GUI 界面中啟動應(yīng)用程序之外,在 Android的命令行終端(可以使用 adb shell 進行連接)也可以使
用am 工具啟動應(yīng)用程序。

   使用am 啟動應(yīng)用程序的格式如下所示:
   # am start -n {包名}/{ 包名}.活動名



應(yīng)用程序開發(fā)的結(jié)構(gòu)
Android應(yīng)用程序開發(fā)是Android開發(fā)中最上面的一個層次,它們構(gòu)建在Android系統(tǒng)提供的API 之上。
Android應(yīng)用程序的基礎(chǔ)是Android提供的各個Java 類,這些類組成了Android系統(tǒng)級的API。


Android應(yīng)用程序可以基于兩種環(huán)境來開發(fā):Android SDK 和Android源代碼。Android系統(tǒng)本身內(nèi)置了一部分標準應(yīng)用(也包括內(nèi)容提供者),在仿真器(包括 SDK環(huán)境和源代碼環(huán)境)中已經(jīng)包含這些內(nèi)置的程序。 用戶自行開發(fā)的應(yīng)用程序和Android內(nèi)置的應(yīng)用層程序包位于同一個層次,都是基于Android框架層的API來構(gòu)建的,它們的區(qū)別僅僅在于他們是否被包含在默認的Android系統(tǒng)中。


Android目錄結(jié)構(gòu)

src : Java 源代碼文件
assets:主要放置多媒體等數(shù)據(jù)文件。
AndroidManifest.xml: 工程描述文件,相當于應(yīng)用的配置文件。在此文件里必須聲明應(yīng)用的名稱,應(yīng)用所用到的Activity,Service,Reveiver等。
可惜的是drawable目錄下不能分子級目錄,如果有這方面需求只能通過命名方法來加以區(qū)分。

每個猶序都會有一竢oidManifest在它的根目錄里面。這個清單為Android系統(tǒng)提供了這個應(yīng)用的基本信息,系統(tǒng)在運行之前必須知道這些信息,另外,如果我們使用系統(tǒng)自帶的服務(wù),如撥號服務(wù),應(yīng)用安裝服務(wù)等,都必須在AndroidManifest.xml文件中聲明權(quán)限

AndroidManifest.xml的功能:

命名應(yīng)用程序的Java應(yīng)用包,這個包名用來唯一標識應(yīng)用程序;

描述應(yīng)用程序的組件,對實現(xiàn)每個組件和公布其功能的類進行命名,這些聲明使得Android系統(tǒng)了解這些組件以及它們在什么條件下可以被啟動

決定哪個組件運行在哪個進程里面

聲明應(yīng)用程序必須具備的權(quán)限,用以訪問受保護的API,以及和其他進程的交互

聲明應(yīng)用程序其他的必備權(quán)限,用以組件之間的交互

列舉application所需要鏈接的庫

drawable-*dpi:  將圖標按分辨率的高低放入不同的目錄,其中draeable-hdpi用來存放高分辨率的圖標,drawable-mdpi用來存放中等分辨率的圖標,drawable-ldpi用來存放低分辨率的圖標

res :
資源文件
   

    values文件夾:用來存放文字的信息
        (1)strings.xml:用來定義字符串和數(shù)值
              <?xml version="1.0"encoding="utf-8"?>
              <resources>
                  <string >Hello World, Hello 3G</string>
                  <string >Android1.1</string>
                    <string >哥想你了</string>
                  <string >按鈕1</string>
                  <string >按鈕1</string>
              </resources>
             每個string標簽生命了一個字符串,name屬性指定它的引用值
        (2)為什么要把這些出現(xiàn)的文字單獨放在strings.xml文件中?
           答案:一是為了國際化,如果需要將文件中的文字換成別的國家的語言,就可以只需要替換掉一個strings.xml文件就可以了;二是為了減少應(yīng)用的體積,例如,我們要在應(yīng)用中使用“哥想你了”這句話1000次,如果我們沒有將“哥想你了”定義在strings.xml文件中,而是直接在應(yīng)用中使用時寫上這幾個字,那么我們就會在應(yīng)用中寫4000個字。4000個字和4個字占用的內(nèi)存可是有很大差距的啊,況且手機的內(nèi)存本來就小,所以應(yīng)該是能省就省          (3)另外還有arrays.xml,color.xml等定義數(shù)組,顏色的,都最好用單獨的一個xml文檔

     layout文件:用來存放界面信息
     <?xml version="1.0"encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical">

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="@string/test"/>

   

</LinearLayout>

<LinearLayout>元素:線性布局的意思,在該元素下的所有子元素都會根據(jù)他的”orientation”屬性來決定是按行還是按列或者按逐個顯示進行布局的

<TextView>元素:是一種顯示控件,他的”text”屬性指定了在這個元素上顯示的內(nèi)容

gen目錄:gen目錄下只有一個自動生成的“R.java”文件

R.java文件:默認有attr,drawable,layout,string這四個靜態(tài)內(nèi)部類,每個靜態(tài)內(nèi)部類對應(yīng)一中資源,如layout靜態(tài)內(nèi)部類對應(yīng)layout中的界面文件,string靜態(tài)內(nèi)部類對應(yīng)string內(nèi)部的string標簽。如果在layout中在增加一個界面文件或者在string內(nèi)增加一個string標簽,R.java會自動在其對應(yīng)的內(nèi)部類增加所增加的內(nèi)容。

R.java除了自動標識資源的索引功能外,還有另一個功能,就是當res文件中的某個資源在應(yīng)用中沒有被用到,在這個應(yīng)用被編譯時,系統(tǒng)不會把對應(yīng)的資源編譯到應(yīng)用中的APR包中。

  可以參考:原文鏈接:http://blog.csdn.net/xy84928/article/details/7047419

<project.properties>應(yīng)用要求運行的最低Android版本
<android 2.2>  存放Android自身的jar包






android應(yīng)用程序的入口  android應(yīng)用程序中,并沒有像c++和java這樣有main函數(shù)來作為應(yīng)用程序的入口.android應(yīng)用程序提供的是入口Activity,而非入口函數(shù). 在eclipse中創(chuàng)建一個android應(yīng)用程序的時候,默認會創(chuàng)建一個Activity.這個Activity實際上就是入口Activity了.從哪里定義它是Activity呢?AndroidManifest.xml文件中定義了整個android應(yīng)用所包含的Activity.默認生成的Activity的定義為:
        <activity android: android:label="@string/app_name">
            <intent-filter>
                <action android: />
                <category android: />
            </intent-filter>
        </activity>
   android應(yīng)用程序?qū)嶋H上是由多個Activity按照一定的次序拼裝起來的,只不過拼裝的過程中,后臺傳遞了一些數(shù)據(jù),使得各個Activity之間能比較好的銜接起來。
    action節(jié)點中的android.intent.action.MAIN表明它所在的Activity是整個應(yīng)用程序的入口點.而category中的android.intent.category.LAUNCHER意思是把這個Activityg歸屬到加載器類,即把這個Activity標注為自動會加載和啟動的Activity,這樣程序啟動時候就先加載這個Activity了.


Android的UI系統(tǒng)實現(xiàn)1  控制和基本事件的響應(yīng)
2  鍵盤事件的響應(yīng)
3  運動事件的處理
4  屏幕間的跳轉(zhuǎn)和事件的傳遞
5  菜單的使用
6  彈出對話框
7  樣式的設(shè)置

Android UI 系統(tǒng)的知識結(jié)構(gòu)如下圖所示:



   對于 一個GUI系統(tǒng)地使用,首先是由應(yīng)用程序來控制屏幕上元素的外觀和行為,這在各個 GUI 系統(tǒng)中是
不相同的,但是也具有相通性。Android系統(tǒng)在這方面,包含了基本的控件控制,鍵盤事件響應(yīng),窗口間跳轉(zhuǎn)、
對話框、菜單、樣式等內(nèi)容,這是GUI 系統(tǒng)所具有的通用內(nèi)容。
1  控件和基本事件的響應(yīng)
   在任何一個GUI 系統(tǒng)中,控制界面上的控件(通常稱為控件)都是一個基本的內(nèi)容。對于 Android應(yīng)用程
序,控件稱為View。

   在Android中,在處理UI中的各種元素的時候,兩個程序中的要點為:
??      1.得到布局文件(XML)中的控件句柄
??     2.設(shè)置控件的行為       
  1.1 事件響應(yīng)方法





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表