Pages - Menu

2014/01/26

C# USB Prg Memo

● -- ●
.■■■ - c/c++  Microsoft : How to Access a USB Device by Using WinUSB Functions
.■■■ - HID (human interface device) : (wiki) is a type of computer device that interacts directly with, and most often takes input from, humans and may deliver output to humans.
.■■■ - USB Port Insert / Remove detection using WMI (Source Code) ; WM_DEVICECHANGE(MSDN)
.■■■ - USB設備通信開發是在程序中調用一系列Windows API函數(以下簡稱API函數),通過系統自帶的HID驅動程序訪問HID設備。Windows提供了API函數來啟動應用程序與設備驅動程序之間的通信,可以使用任何 能訪問API函數的編程語言, 如VB,C/C++,C#,Delphi等編寫的應用程序,在設備驅動程序的支持下,調用ReadFile、WriteFile等API函數來對USB設 備進行讀寫操作。Windows用來與HID設備通信的API函數,包含在 hid.dll 、 setupapi.dll 、 kernel32.dll  3個dll文檔中,分別起到與HID設備通信、尋找與識別設備、交換數據的作用。
.■■■ - http://www.codeproject.com/KB/system/DriveDetector.aspx
.■■■ - 硬件檢測:安裝、停用、usb設備檢查 和c#實現

.■■■ - 基於Visual C#的USB接口通信程序設計
.■■■ - [C#] 監控USB插拔 : http://kuomingwang.blogspot.tw/2010/09/c-usb.html
// 常數宣告
        //USB
        public const int WM_DEVICECHANGE = 0x219;
        public const int DBT_DEVICEARRIVAL = 0x8000;
        public const int DBT_CONFIGCHANGECANCELED = 0x0019;
        public const int DBT_CONFIGCHANGED = 0x0018;
        public const int DBT_CUSTOMEVENT = 0x8006;
        public const int DBT_DEVICEQUERYREMOVE = 0x8001;
        public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002;
        public const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
        public const int DBT_DEVICEREMOVEPENDING = 0x8003;
        public const int DBT_DEVICETYPESPECIFIC = 0x8005;
        public const int DBT_DEVNODES_CHANGED = 0x0007;
        public const int DBT_QUERYCHANGECONFIG = 0x0017;
        public const int DBT_USERDEFINED = 0xFFFF;
        //雙擊滑鼠左鍵
        public const int WM_MOUSE_DOUBLE_CHICK = 0x0203;
.■■■ - [C#.NET][WinForm] Windows 視窗訊息接收 - WndProc
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ - //以下是調用windows的API的函數
        //獲得GUID
        [DllImport("hid.dll")]
        public static extern void HidD_GetHidGuid(ref Guid HidGuid);
        Guid guidHID = Guid.Empty;
        //過濾設備,獲取需要的設備
        [DllImport("setupapi.dll", SetLastError = true)]
        public static extern IntPtr SetupDiGetClassDevs(ref Guid ClassGuid, uint Enumerator, IntPtr HwndParent, DIGCF Flags);
        IntPtr hDevInfo;
        //獲取設備,true獲取到
        [DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern Boolean SetupDiEnumDeviceInterfaces(IntPtr hDevInfo, IntPtr devInfo, ref Guid interfaceClassGuid, UInt32 memberIndex, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData);
        public struct SP_DEVICE_INTERFACE_DATA
        {
            public int cbSize ;
            public Guid interfaceClassGuid;
            public int flags;
            public int reserved;
        }

        // 獲取接口的詳細信息 必須調用兩次 第1次返回長度 第2次獲取數據
        [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)]
        private static extern bool SetupDiGetDeviceInterfaceDetail(IntPtr deviceInfoSet, ref SP_DEVICE_INTERFACE_DATA deviceInterfaceData, IntPtr deviceInterfaceDetailData,
            int deviceInterfaceDetailDataSize, ref int requiredSize, SP_DEVINFO_DATA deviceInfoData);
        [StructLayout(LayoutKind.Sequential)]
        public class SP_DEVINFO_DATA
        {
            public int cbSize = Marshal.SizeOf(typeof(SP_DEVINFO_DATA));
            public Guid classGuid = Guid.Empty; // temp
            public int devInst = 0; // dumy
            public int reserved = 0;
        }

        [StructLayout(LayoutKind.Sequential, Pack = 2)]
        internal struct SP_DEVICE_INTERFACE_DETAIL_DATA
        {
            internal int cbSize;
            internal short devicePath;
        }

        public enum DIGCF
        {
            DIGCF_DEFAULT = 0x1,
            DIGCF_PRESENT = 0x2,
            DIGCF_ALLCLASSES = 0x4,
            DIGCF_PROFILE = 0x8,
            DIGCF_DEVICEINTERFACE = 0x10
        }

        //獲取設備文件
        [DllImport("kernel32.dll", SetLastError = true)]
        private static extern int CreateFile(
            string lpFileName,                            // file name
            uint dwDesiredAccess,                        // access mode
            uint dwShareMode,                            // share mode
            uint lpSecurityAttributes,                    // SD
            uint dwCreationDisposition,                    // how to create
            uint dwFlagsAndAttributes,                    // file attributes
            uint hTemplateFile                            // handle to template file
            );
        //讀取設備文件
        [DllImport("Kernel32.dll",SetLastError = true)]
        private static extern bool ReadFile
            (
                IntPtr hFile,
                byte[] lpBuffer,
                uint nNumberOfBytesToRead,
                ref uint lpNumberOfBytesRead,
                IntPtr lpOverlapped
            );

        //釋放設備
        [DllImport("hid.dll")]
        static public extern bool HidD_FreePreparsedData(ref IntPtr PreparsedData);
        //關閉訪問設備句柄,結束進程的時候把這個加上保險點
        [DllImport("kernel32.dll")]
        static public extern int CloseHandle(int hObject);

.■■■ -

-
-

2014/01/21

數位相機[Digital Camera] memo

● -- ● 數位照相機(Digital Camera)Wiki
.■■■ - 色溫表 Wiki
.■■■ - 單眼反光相機 Wiki(Single Lens Reflex Camera,簡稱:SLR camera)又稱作單鏡反光相機或單反相機(大陸及港澳地區),是一種相機的設計型式,其使用一塊放置在鏡頭與底片間的鏡子把來自鏡頭的圖像投射到對焦屏上。大部分單眼相機通過目鏡觀察五稜鏡反射來的圖像,但也有其它形式的取景器,例如俯視取景器。
.■■■ - 數位單眼相機 Wiki(Digital Single Lens Reflex Camera,簡稱DSLR),簡稱數位單眼,是一種以數位方式記錄成像的照相機。屬於數位靜態相機(Digital Still Camera,DSC)與單眼相機(SLR)的交集。
.■■■ - DCView 攝影教學文章 : http://article.dcview.com/?type=4&p=1
.■■■ - 一些高階DC和全部DSLR,可看到M/A/S/P和AUTO選項,
M (Manual Mode) - 全手動模式:光圈和快門速度均有用家設定
A (Aperture-priority Mode) - 光圈優先模式/光圈先決:用家設定光圈值,相機自動計算出合適的快門速度,主要用來調整景深,這也是最常用的模式。
S (Shutter-priority Mode) - 快門優先模式/快門先決:用家設定快門速度,相機自動計算出合適的光圈值,主要是用來拍攝動態相片或夜景。
P (Programmed Auto) - 程序模式:用家不用理會光圈快門,相機會自動計算。
Auto - 全自動,等同傻瓜機,所有東西也由相機控制,包括閃燈、光圈、快門、ISO值等,舉起便拍!
.■■■ - 攝影入門FotoBeginner : http://www.fotobeginner.com/category/beginner-tips/
.■■■ - [聊攝影] : http://judelaw.pixnet.net/blog/category/1528417
.■■■ - 攝影新手教學必讀20篇! | 攝影札記Photoblog
.■■■ - 新手攝影教學| PHOTALKS

.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ - M代表Mega Pixels=百萬畫素,2M就是200萬畫素
沖洗照片尺寸(英吋)
建議解析度
畫素()
2(證件照或網頁)
640*480
30
3*5
1280*960
100
4*6
1600*1200
200
5*7
2048*1536
300
8*10
2560*1920
500
.■■■ - 曝光(exposure)

.■■■ - 不少人都會選擇使用RAW檔拍攝相片,回家後才再調較色溫
.■■■ - 人像模式 - 相機會自動選擇大光圈(如 f/1.4 、f/2.8之類,f較小,光圈大)。使用大光圈拍攝,容易令你相片除目標對象外,背景都變得模模糊糊(所謂的淺景深),以突出人像主題。相對於大型的風景或建築時這模式亦適用。
.■■■ - 微距模式(有人稱 花花模式)- 拍攝近距離而且清晰、突出細節的作品。這模式在拍攝花朵、昆蟲以及其他例如是錢幣的小型物件時很有用。一般是離對象2-10厘米。景深非常淺, 因為手震很易對錯焦, 用腳架或者其他東西固定十分有用。
.■■■ - 風景模式 - 光圈會收細(f值變大)。整幅相片都變得清晰(所謂深景深,即不會如人像般背景朦朧)。這模式會盡量確保你相片的整個畫面都是清晰不會朦掉。由於相機的光圈被收細了,相機的曝光時間有可能會變久。這時候最好用三腳架來固定相機,避免手震令相片模糊。
.■■■ - 動作模式 - 拍攝如運動選手、寵物、汽車、野生動物。用高速快門凝固拍攝對象的動作。
.■■■ - 夜間模式 - 在昏暗的環境下進行拍攝。相機快門變慢,以長時間曝光,去拍攝黑暗中的物件及背景細節。
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -

-
-

2014/01/17

Windows Registry Regedit.exe 系統登錄檔 Memo

● -- ● Windows Registry Regedit.exe 系統登錄檔 Memo
.■■■ - Microsoft - 如何使用 .reg 檔案新增、修改或刪除登錄子機碼和值
.■■■ - Windows Registry 系統登錄檔詳解
.■■■ - 在Windows中,登錄檔由兩個檔案組成︰System.dat和User.dat,保存在windows所在的資料夾中。它們是由二進製數據組成。 System.dat包含系統硬體和軟體的設置,User.dat保存著與用戶有關的訊息,例如工作管理員的設置,顏色方案以及網路密碼等等。
.■■■ - HKEY-CLASSES-ROOT  檔案擴展名與應用的關聯及OLE訊息
HKEY-CURRENT-USER  當前登錄用戶控制面板選項和桌面等的設置,以及映射的網路驅動器
HKEY-LOCAL-MACHINE 電腦硬體與應用程式訊息
HKEY-USERS  所有登錄用戶的訊息
HKEY-CURRENT-CONFIG 電腦硬體配置訊息
HKEY-DYN-DATA  即插即用和系統性能的動態訊息
.■■■ - 當登錄檔損壞時,啟動時Windows會自動用System.dat和User.dat的備份System.da0和User.da0進行恢復工作,如果 不能自動恢復,可以營運Regedit.exe(它可以營運在在Windows下或DOS下),導入.reg備份檔案。也可以營運ERU.EXE進行恢 復。
如果您沒有進行備份或者登錄檔損壞的非常嚴重,那么您可以試試最後一著︰在c:\下有一個System.1st檔案,屬性為隱藏和只讀,它記錄著安裝 Windows時的電腦硬體軟體訊息,用這個檔案覆蓋System.dat。但是這樣的話您安裝的應用軟體可能會無法營運,必須重新安裝。
.■■■ -將要修改的寫入一個.reg檔案中,然後導入登錄檔中。.reg檔案的基本格式為︰
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Super Rabbit\MagicSet]
‘@’='Super Rabbit Magic Set For Windows 98 V2.92′
‘a’=dword:00000001
‘b’=hex:02,05,00,00
……
;關閉 ...(加入註解,記錄每壹條登錄檔的作用)
[HKEY_LOCAL_MACHINE\Software\SCC\QuickViewer]
……
第一行為
第二行為空行。
第三行使用[]括起子鍵分支,其中HKEY_LOCAL_MACHINE\Software\Super Rabbit\MagicSet就是一個子鍵分支。
第四、五、六行是該子鍵下的設置數據。其中@表示登錄檔編輯器右窗格中的’默認’鍵。
以下類似。
這樣做的好處是可以避免錯誤的寫入或刪除等操作,但是要求用戶了解登錄檔的內部架構和.reg檔案的格式。

.■■■ -
Windows Registry Editor Version 5.00

;關閉 USB 儲存裝置使用功能
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR]
"Start"=dword:00000004

;開啓 USB 寫入保護功能
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies]
"WriteProtect"=dword:00000001

;開啓 USB 儲存裝置使用功能
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR]
"Start"=dword:00000003

;關閉 USB 寫入保護功能
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies]
"WriteProtect"=dword:00000000
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
-
-

2014/01/15

Android Studio Memo

● -- ● Android Studio wiki : http://zh.wikipedia.org/wiki/Android_Studio
.■■■ - http://developer.android.com/ ;;;
.■■■ - Developers > API Guides > User Interfase > Menus :     http://developer.android.com/guide/topics/ui/menus.html
.■■■ - 安裝Android Studio : 由 Getting Started with Android Studio下載並安裝Android Studio ( JDK 1.7 up x64 )
.■■■ - Android Developers : Youtube
.■■■ - Android Studio 中文組(中文社區) http://www.android-studio.org/
.■■■ - Android Studio的安裝、設定與執行 - 簡睿隨筆
.■■■ - [Android Studio #2] 操作資源XML檔 - 簡睿隨筆
.■■■ - 最新Android App 開發工具- 孫傳雄研究室-Android Studio 下載安裝中文教學
.■■■ - Android Studio入門指南 cn [CSDN]
.■■■ -  Google I/O 2013 - What's New in Android Developer Tools - YouTube
.■■■ -
.■■■ -  App 教學影片-進階-4.Android進階程式設計 - YouTube

.■■■ - 03-AndroidStudio建立第一支App程式 - YouTube

.■■■ - 第04集:Android生命週期的介紹cn [Android入門介紹] [老羅Android開發視頻教程] - YouTube
全部 - 第01集:Android學習路線圖介紹 [Android入門介紹] - YouTube
.■■■ - Android SDK 教學課程 (2015) - 孫傳雄研究室
Android Studio 開發工具下載安裝教學
“ Quick Start ” ( 快速開始列表 ) 之中則列示有

  • “ New Project... ” ( 建立全新專案 ) 、 
  • ” Import Project ” ( 匯入專案 ) 、 
  • ” Open Project ” ( 開啟專案 ) 、 
  • ” Check out from Version Control ” ( 查看版本控制服務 ) 、
  •  ” Configure ” ( 設定 ) 與 
  • ” Docs and How-Tos ” ( 線上說明文件 ) 等六個選項。 Youtube


.■■■ - Android Apps Development Tutorial for Beginners (1) - 2015 Youtube(Android Studio)
Android Apps Development Tutorial for Beginners (2) - 2015 Youtube(Android Studio)
Android Apps Development Tutorial for Beginners (3) - 2015 Youtube(Android Studio)
Android Apps Development Tutorial for Beginners (4) - 2015 Youtube(Android Studio)
Android Apps Development Tutorial for Beginners (5) - 2015 Youtube(Android Studio)
Android Apps Development Tutorial for Beginners (6) - 2015 Youtube(Android Studio)
.■■■ - Android Tutorial - Login and Register Part 1 - Saving user details
Android Tutorial - Login and Register Part 2 - Saving user details
Android Tutorial - Login and Register Part 3 - Setting up SQL database & PHP files
Android Tutorial - Login and Register Part 4 - Accessing SQL Database from device
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ - Java 程式語言教學 : http://programming.im.ncnu.edu.tw/J_index.html
.■■■ - Java 教學及程式範例大全@ 符碼記憶
.■■■ - 華醫資管Java教學網
.■■■ - 程式語言教學誌: Java 入門指南
.■■■ - IntelliJ IDEA中文愛好者 簡體網站
.■■■ - IntelliJ 官網 : http://www.jetbrains.com/idea/
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -

.■■■ -  零基礎java教程-從零碼起第一集 小g (YouTube 教學)
.■■■ -  全部 - CH1_1 Java物件導向概念與物件導向的基本語法  - YouTube
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ - $411 Android 5.x App開發教戰手冊:使用Android Studio開發
$427 Java SE 8與Android 5.x程式設計範例教本(附Java和Android範例檔/附光碟)
$379 Android 5 變形金剛全面進化
$435 Android App 程式設計教本之無痛起步:使用 Android Studio 開發環境
.■■■ - 點選 ” New Project... ” ( 建立全新專案 )
出現 ” New Project – Configure your new project ” ( 新專案 - 設置您的新專案 )
Application name :在 Android Studio 必須配合 ” Package name “ ( 套件名稱 ) 及 ” Project location ” ( 專案位置 ) 欄位規則,所以,您需使用半形英文字母或數字命名。此欄位的首字母僅能大寫字母,不能小寫字母或數字。若需要使用中文命名的 “ Application name “ ,可在此 Android Project 專案子目錄中的 strings.xml 檔案進行修改設定。
.■■■ - 在 Android 的使用者介面設計世界中,大致上可區分成兩大區域,一為繼承 Actvitiy 類別之 Java 類別 ( Class ) 檔案、二為 Layout 之 XML 版面檔案。這種規劃或許像是在前端網頁設計世界中,常見的 JavaScript 與 HTML 兩者之分野般,一個掌管使用者介面的程式邏輯控制、一個掌管使用者介面的版面配置。
.■■■ - 由 Android 模擬器所軟體模擬出來的每個虛擬化 Android 設備則稱為 Android Virtual Device ( 簡稱 AVD )。當您使用 Android Studio 建立 Android Project 之後,您可以在 Android Studio 之中啟動 AVD Manager ,以便安裝設定一個全新的 Android 模擬器 ( AVD ) 。通常而言,如果您在首次安裝 Android Studio 的過程當中,並未勾選安裝 “ Android Virtual Device “ 項目的話,則 AVD Manager 並不會為您預設任何的 Android 模擬器 ( AVD ) 。
您可直接點選 AVD Manager 【Phone ( 智慧型手機 ) 、 Tablet ( 平板電腦 ) 、 Wear ( 穿戴式裝置 ) 、與 TV ( 智慧型電視 ) 等四種模擬載具形式】歡迎視窗中的 ” Create a vitrual device ” 按鈕,以便練習自行安裝設定一個全新的 Android 模擬器 ( AVD ) 。
.■■■ -  Android Wiki :

  • 2.3 (Gingerbread) 基於Linux Kernel 2.6.35 : 支援近場通訊(NFC)。支援螢幕截圖功能。
  • 3.0.1/3.1/3.2 (Honeycomb) 基於Linux Kernel 2.6.36 : 專為平板電腦設計。
  • 4.0 (Ice Cream Sandwich) 基於Linux Kernel 3.0.1 : 相機內建全景(Panorama)模式。系統字型由原先的Droid Sans變更為Roboto。
  • 4.1/4.2/4.3 (Jelly Bean) 基於Linux Kernel 3.4.0 : 4.1 - 離線語音輸入。取消內建 Flash Player。4.2 - 支援多使用者登入,支援手勢輸入。支援多媒體無線傳輸 Miracast4.3 - 「藍芽低功耗」功能(藍芽4.0),支援OpenGL ES 3.0,為Android遊戲帶來更出色的視覺體驗。支援4K,並加入對640PPI(XXXHDPI)的支援。支援TRIM指令,使得內存不會越用越慢。
  • 4.4/4.4.1/4.4.2/4.4.3/4.4.4 (KitKat) 基於Linux Kernel 3.4.0 : 支援 Google Cloud Print 服務,支援 Office 應用程式直接打開及儲存使用者在 Google Drive 內的檔案,即時同步更新檔案。全新的 NFC 整合。全新的 Java 虛擬機器執行環境 ART(Android Runtime)。支援 Chromecast 及新的 Chrome 功能。完全封鎖 Adobe Flash player 功能。
  • 5.0/5.0.1/5.0.2 (Lollipop) 基於Linux Kernel 3.4.0 :支援64位元處理器。支援Bluetooth 4.1。採用全新Material Design介面。全面由 Dalvik 虛擬機器轉用 Android RunTime(ART)編譯虛擬機器。官方宣稱新的虛擬機器相較於舊虛擬機器,效能可提昇四倍。 新增多人裝置分享功能,可在其他裝置登入自己帳號,並取得用戶的聯絡人、日曆等Google雲端資料。改善Android TV的支援。
  • 5.1/5.1.1 (Lollipop) 基於Linux Kernel 3.4.0 :對多卡和高畫質語音的支援。 
  • 6.0 (Marshmallow) 基於Linux Kernel x.x.x : 限制APP存取權限。原生系統支援指紋識別功能,支援USB Type C,可進行更快速的充電。

.■■■ - Android API Level :
Platform Version API Level VERSION_CODE Notes
Android 6.0              23
Android 5.1              22 LOLLIPOP_MR1 Platform Highlights
Android 5.0              21 LOLLIPOP
Android 4.4W              20 KITKAT_WATCH KitKat for Wearables Only
Android 4.4              19 KITKAT Platform Highlights
Android 4.3              18 JELLY_BEAN_MR2 Platform Highlights
Android 4.2, 4.2.2      17 JELLY_BEAN_MR1 Platform Highlights
Android 4.1, 4.1.1       16 JELLY_BEAN Platform Highlights
Android 4.0.3, 4.0.4     15 ICE_CREAM_SANDWICH_MR1 Platform Highlights
Android 4.0, 4.0.1, 4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2               13 HONEYCOMB_MR2
Android 3.1.x               12 HONEYCOMB_MR1 Platform Highlights
Android 3.0.x               11 HONEYCOMB Platform Highlights
Android 2.3.4 2.3.3       10 GINGERBREAD_MR1 Platform Highlights
Android 2.3.2 2.3.1 2.3 9 GINGERBREAD
Android 2.2.x                 8 FROYO Platform Highlights
.■■■ -
.■■■ - Android Studio啟用手機USB調試 : (Using Hardware Device - developer.android)
4.2以上的系統默認都是隱藏了開發者模式,所以需要去到 Setting > About phone > 菜單下點擊 Build number 七次 以顯示開發者模式,然後到開發者模式菜單下打開 USB debugging。
  • 在Android Studio中,把app的默認啟動目標改為USB device,點擊【app】【app configuration】,在【Target Device】選擇【USB device】
  • 將手機跟電腦相連,打開手機上的【設置】【開發人員選項】【USB 調試】,電腦會自動尋找並安裝調試用的驅動,但是我的手機驅動並沒有正確安裝,我就去手機的驅動文件夾中找到了Handset WinDriver.exe(下載)華為手機的調試驅動,手動安裝這個就可以識別Android設備了。
  • 運行Hello World應用,Android Studio會自動生成apk包,發送到手機上,跟安裝app一樣的快速。
Android中adb(Android Debug Bridge)命令的用法 2015-6-19
.■■■ - 設置android studio啟動時不檢查sdk
打開 android studio安裝目錄下的bin文件夾,找到 idea.properties 並打開。在該文件中添加如下代碼:( C:\Program Files\Android\Android Studio\bin )
# 禁用首次啓動檢查sdk更新功能
disable.android.first.run=true

重啟android studio就不會再出現sdk設置檢查界面了。
.■■■ -
.■■■ - 開啟模擬器時可能會遇到這個錯誤訊息,
Cannot launch AVD in emulator.
Output: emulator:
ERROR: x86 emulation currently requires hardware acceleration! Please ensure Intel HAXM is properly installed and usable. CPU acceleration status: HAX kernel module is not installed!

1.點選Tools→Android→SDK Manager
2.下載並安裝Extras類的,Intel X86 Emulator Accelerator(HAXM installer)
3.找到Android SDK的安裝路徑 ( 點左上角的File → Project Structure,可以較快速的知道路徑位置。)
4.sdk→extras→intel→Hardware_Accelerated_Execution_Manager→ intelhaxm-android.exe 安裝此檔案
.■■■ - Windows Hyper-V 如開啓,VirtualBox 無法執行或只能看到 x32 的系統,由 "新增移除程式" "開啟或關閉Windows功能" 中解除 Hyper-V即正常,是否會讓 Android Studio AVD 不正常,?(不確定)
.■■■ - Android Studio 環境變數設定 :【】

  • Android 環境變數中最好無中文字,易產生錯誤。Windows 環境中如登入名稱為中文名,易生錯誤。可改一些環境變數設定修改問題。
  • ANDROID_SDK_HOME : C:\AVD ;;; 編輯PATH,增加一個值  「%ANDROID_SDK_HOME%\tools」
  • JAVA 環境變數設定 :
    CLASSPATH  : C:\Program Files\Java\jre1.8.0_40\lib;C:\Program Files\Java\jdk1.8.0_40\lib
    JAVA_HOME  : C:\Program Files\Java\jdk1.8.0_40
    編輯 PATH 新增 : %JAVA_HOME%\bin;

.■■■ - 使用 Gradle 來編譯 Java 專案
.■■■ -
.■■■ - Ubuntu 15.04 install Android Studio
JAVA Install : ( javac -version ) ( Oracle - Install Oracle JDK in Ubuntu )
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
--- 安裝有問題時移除方法
sudo apt-get remove oracle-java8-set-default ; sudo apt-get remove oracle-java8-installer ;
sudo apt-get autoremove
sudo apt-get purge oracle-java8-set-default ; sudo apt-get purge oracle-java8-installer ;
---
sudo apt-get install ppa-purge
sudo ppa-purge ppa:webupd8team/java
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ -
.■■■ - ubuntu jdk install :
Download the latest JDK(jdk-Xuxx-linux-xXX.tar.gz) from Oracle ( Oracle Help Java Install )

  • sudo mkdir /usr/lib/jvm
  • cd /usr/lib/jvm
  • sudo tar -xvzf ~/Downloads/jdk-8u60-linux-x64.tar.gz
    or : sudo tar -xvzf ~/下載/jdk-8u60-linux-x64.tar.gz
  • sudo gedit /etc/environment
    add path  : 
    /usr/lib/jvm/jdk1.8.0_60/bin
    /usr/lib/jvm/jdk1.8.0_60/db/bin
    /usr/lib/jvm/jdk1.8.0_60/jre/bin
    add environment variables :
    J2SDKDIR="/usr/lib/jvm/jdk1.8.0_60"
    J2REDIR="/usr/lib/jvm/jdk1.8.0_60/jre"
    JAVA_HOME="/usr/lib/jvm/jdk1.8.0_60"
    DERBY_HOME="/usr/lib/jvm/jdk1.8.0_60/db"
    完成後如下並儲存: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1.8.0_60/bin:/usr/lib/jvm/jdk1.8.0_60/db/bin:/usr/lib/jvm/jdk1.8.0_60/jre/bin"
    J2SDKDIR="/usr/lib/jvm/jdk1.8.0_60"
    J2REDIR="/usr/lib/jvm/jdk1.8.0_60/jre"
    JAVA_HOME="/usr/lib/jvm/jdk1.8.0_60"
    DERBY_HOME="/usr/lib/jvm/jdk1.8.0_60/db"
  • Enter the following commands to inform the Ubuntu about the Java's location. Depending on your JDK version, the paths can be different.
    sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_60/bin/java" 0
    sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0_60/bin/javac" 0
    sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_60/bin/java
    sudo update-alternatives --set javac /usr/lib/jvm/jdk1.8.0_60/bin/javac
  • To verify the setup enter the following commands and make sure that they print the location of java and javac as you have provided in the previous step.
    update-alternatives --list java
    update-alternatives --list javac
  • 重新啓動,啓動後可執行 ( java -version ) 檢查。
.■■■ - 安裝 Android Studio For Ubuntu

  • 安裝 : sudo apt-get install lib32stdc++6 ( 避免安裝時出現 : unable to run mksdcard sdk tool 錯誤,另有說再加裝 lib32z1 lib32ncurses5 lib32bz2-1.0 )
  • 下載 Android Studio Linux 版本,並解壓縮至 Home 目錄下
  • cd ~/android-studio/bin ; 執行 sudo ./studio.sh 即進行安裝 Android Studio 
  • 建立捷徑 :
    $ cd /usr/share/applications
    $ sudo gedit android-studio.desktop
    內容為 :
    [Desktop Entry]
    Type=Application
    Terminal=true
    Name=Android Studio
    Icon=/home/使用者名/android-studio/bin/studio.png
    Exec=/home/使用者名/android-studio/bin/studio.sh

    執行 【 nautilus . 】後於彈出視窗中將 android 拉到 Launcher 即可新增捷徑

.■■■ - Android epub Lib : psiegman/epublib : https://github.com/psiegman/epublib
.■■■ - MHTML 網頁歸檔(wiki)(英語:MIME HTML或MIME Encapsulation of Aggregate HTML Documents,又稱單一檔案網頁或網頁封存檔案)為以多用途網際網路信件擴展格式,將一個多附件網頁(如包含大量圖片、Flash動畫、Java小程式的網頁)儲存為單一檔案[1],可用於發送HTML電子信件,此單一檔案即稱為一網頁封存檔案,其副檔名為.mht。這種格式有時被簡稱為MHT。
MHTML是在RFC 2110中定義,然後經RFC 2557修訂。MHTML文件的基礎是超文件標示語言。

.■■■ -
.■■■ -
.■■■ -
-
-