1. HTC手機工程模式各選項什麼意思
HTC手機工程模式各選項的意思:
藍色FASTBOOT:這個是手機在工程模式下與電腦連接的一個模式,主要用來線刷系統,以及刷入各種文件如:recovery.img/.boot.img等文件
Recovery:玩機的人對這個選項最熟悉不過了,這個選項進入以後是可以用來卡刷ROM包的。
FACTORY RESET:這個是在官方系統的前題條件下,用來格式化系統恢復出廠設置的功能。(提示:必須是官方系統使用沒有刷過第三方系統)。
SIMLOCK:是手機的網路,此選項千萬不要去隨便點,後果很嚴重
IMAGE CRC:IMAGE CRC是ROM的校驗值,用於比較ROM的正確性.一般不使用。
2. webservice.htc序列化ArrayList
Axis是Apache組織推出的SOAP引擎,Axis項目是Apache組織著名的SOAP項目的後繼項目。Axis為開發者提供了大量的序列化/反序列化器,能夠基本滿足大部分應用。但在某些情況下,對特定的對象,現有的序列化/反序列化器不能勝任,於是只有開發人員自己實現專用於此對象的序列化/反序列化器插入到Axis中來完成序列化工作。考慮到Web Service是一門新興技術,中文資料大多是泛泛的講解,關於序列化/反序列化器的開發鮮有較為深入的介紹,本文提供一份較為完整的開發指南,並提供了一個十分有用的實現,即序列化JDOM模型的Element,使其可以通過Web 服務在網路上傳輸,我想這一擴展是許多採用JDOM作為XML解析工具的開發人員都夢寐以求的功能。通過本文的介紹和實例,希望能起到拋磚引玉的作用,讀者在閱讀完本文之後可以輕松的實現針對於任何非符合BEAN規范的對象的序列化/反序列化器。
本文所面對的讀者需要有一定的使用Axis做Web服務開發的開發經驗,因此關於如何Axis的基礎知識並不在本文的介紹范圍,如果讀者對此感興趣,可以參考本文最後的參考資料部分,去相應的網站進行學習。
序列化/反序列化器簡介
序列化/反序列化器在英文中的對應翻譯是Serializer/Deserializer,一個序列化器的功能是遵循一定的映射規則和編碼風格,將一種類型的java對象通過某種特定的機制,轉換成為XML描述的形式;反序列化器的功能是序列化器所做工作的逆操作,兩者相輔相成,成對出現。Axis中的序列化/反序列化器採用設計範式中的工廠模式,每一個Serializer唯一對應一個SerializerFactory;每一個Deserializer唯一對應一個DeserializerFactory。一種類型的JAVA對象具體要採用哪個序列化/反序列化器需要在提供Web服務的伺服器和調用Web服務的客戶端分別配置,關於這一部分如何配置,我將在本文後面的內容中進行詳細介紹。Axis已經為開發者提供了豐富的序列化/反序列化器,對於java的基本數據類型,絕大部分常用的容器類(比如數組類型,Vector類型等)都提供了實現,特別是提供了對W3C的DOM對象(比如Document, Element等)和符合Bean規范的JAVA對象提供了功能完善的序列化/反序列化器,因此我們在需要的時候只要在配置文件中配置一下就可以直接使用。如果對象中包含其它類型的對象,比如Vector中包含一組Bean對象,Axis會自動疊代的調用序列化器,最終拼裝成唯一的XML表述。在還原成JAVA對象時,也遵循這樣的疊代操作逆向進行。關於Axis到底內置了哪些序列化/反序列化器,您可以參照Axis的API文檔中包org.apache.axis.encoding.ser下的類的名稱"望文生義"的了解一下,在以後的開發中做到心中有數。但對於一些特殊類型的對象(其實我們自己開發的很大一部分類都是這種特殊類型的對象,很少有絕對符合Bean規范的),需要通過Web服務進行傳遞,我們不得不開發自己的序列化/反序列化器。
開發篇
開發自己的序列化/反序列化器是一個激動人心的工作,但是卻並不復雜,需要做的事情包括實現名成為org.apache.axis.encoding的包中的SerializerFactory,Serializer,DeserializerFactory和Deserializer這四個介面。下面我將結合一個實例來講解序列化/反序列化器的開發方法,希望讀者能夠一邊參看本文提供的源代碼一邊學習。
JDOM作為一款比較"另類"的XML解析工具(因為它不符合W3C的DOM模型,自己另立一套)默默地佔領著java世界裡的xml解析器的半壁江山,由於其簡潔的設計和方便靈活的API調用,已經漸漸成為了許多開發人員在進行XML開發的首選。但是Axis是建立在W3C的DOM模型的基礎之上,師出名們正派,自然不屑與JDOM為伍。因此當開發人員想將自己已經寫好的基於JDOM的應用模塊採用Web服務的方式發布的時候,不可避免的會遇到如何將JDOM模型下的對象如Document, Element等序列化的問題。在軟體工程師不會自己擴展Axis的序列化/反序列化器的時候,我們只能有兩個辦法達到這個目的,第一個就是更改以前應用模塊內的API設計,使暴露的入口參數和返回值參數都是W3C的對象類型,但這種做法並不現實,因為這一應用模塊往往不是獨立存在,牽一發將動全身,導致舊有系統架構的崩塌;另一種做法就是為這個模塊做一個代理類,它做的工作就對外接收或返回DOM模型的對象,對內轉換成JDOM模型的對象,然後轉發給應用模塊,繁瑣且效率低下。當我們向Axis注入了針對於JDOM模型的序列化/反序列化器後,這一工作便可以由Axis代勞了。下面我們將逐個開發這四個類:
JDomElementSerializerFactory
JDomElementSerializerFactory是一個工廠類,需要通過某種機制注冊到Axis引擎(具體方法見下面"伺服器端應用篇");Axis通過調用它,來實例化JDomElementSerializer。Axis 提供了BaseSerializerFactory,這個類是一個抽象類,並實現其中包含了一些可重用的代碼。我們自己開發的工廠類只需簡單繼承這個類就可以。構造函數中需要調用父類的構造函數將序列器類下面是它的源代碼:
package org.apache.axis.encoding.ser;
public class JDomElementSerializerFactory
extends BaseSerializerFactory {
public JDomElementSerializerFactory() {
super(JDomElementSerializer.class);
}
}
JDomElementSerializer
JDomElementSerializer實現org.apache.axis.encoding.Serializer介面,其核心API是serialize(),我們需要在這個方法的內部完成對JDOM模型的Element的序列化工作,序列化的結果要保存在入口參數傳入的序列化上下文對象(SerializationContext)中:
public void serialize(QName name, Attributes attributes, Object value,
SerializationContext context) throws java.io.IOException {
if (!(value instanceof Element))
throw new IOException(
Messages.getMessage("cant Serialize Object"));
//獲取符合JDOM的Element對象
Element root=(Element)value;
//輸出到StringWriter
XMLOutputter outputter=new XMLOutputter();//創建一個JDOM的XML輸出器
StringWriter sw=new StringWriter();
outputter.output(root,sw);
//用支持W3C的DOM模型的Xerces解析器解析文本流
DOMParser parser=new DOMParser();//創建一個DOM的XML解析器
try {
parser.parse(new org.xml.sax.InputSource(
new java.io.StringReader(sw.toString())));
}catch (Exception ex) {
throw new java.io.IOException("序列化時產生錯誤");
}
//獲取符合DOM模型的Element對象
org.w3c.dom.Element w3c_root =
parser.getDocument().getDocumentElement();
//放入序列化上下文對象中
context.startElement(name, attributes);
context.writeDOMElement(w3c_root);
context.endElement();
}
反序列化器的工廠類同序列化器的工廠類一樣的設計,在此不在贅述。代碼:
package org.apache.axis.encoding.ser;
public class
extends BaseDeserializerFactory {
public () {
super(JDomElementDeserializer.class);
}
}
JDomElementDeserializer
用過SAX解析XML的讀者,對反序列化的實現比較容易理解,反序列化也採用了消息觸發的機制,我們只需繼承org.apache.axis.encoding.DeserializerImpl類,並覆蓋其中的onEndElement方法:
/**
* 在元素結束觸發反序列化的方法
* @param namespace String 命名空間
* @param localName String 本地名稱
* @param context DeserializationContext 反序列化上下文
* @throws SAXException
*/
public void onEndElement(String namespace, String localName,
DeserializationContext context) throws SAXException {
try {
//從反序列化上下文對象中獲取原始的消息元素
MessageElement msgElem = context.getCurElement();
if (msgElem != null) {
MessageContext messageContext = context.getMessageContext();
Boolean currentElement = (Boolean) messageContext.getProperty(
DESERIALIZE_CURRENT_ELEMENT);
//如果當前的消息元素本身需要反序列化
if (currentElement != null && currentElement.booleanValue()) {
org.w3c.dom.Element element = msgElem.getAsDOM();
org.jdom.input.DOMBuilder db=new org.jdom.input.DOMBuilder();
value=db.build(element);
messageContext.setProperty(DESERIALIZE_CURRENT_ELEMENT,
Boolean.FALSE);
return;
}
//反序列化消息元素中的消息體
java.util.ArrayList children = msgElem.getChildren();
if (children != null) {
//取得消息體
msgElem = (MessageElement) children.get(0);
if (msgElem != null) {
org.w3c.dom.Element ret = msgElem.getAsDOM();
org.jdom.input.DOMBuilder db=new org.jdom.input.DOMBuilder();
//用DOMBuilder將DOM模型的Element,轉換成JDOM模型的Element
value=db.build(ret);
}
}
}
}
catch (Exception ex) {
//錯誤,則記日誌,並拋SAXException
log.error(Messages.getMessage("exception00"), ex);
throw new SAXException(ex);
}
}
完成這四個類的編碼,序列化/反序列化器的開發工作基本完成,下面將詳細講解使用及部署方法。
伺服器端應用篇
為了簡單起見,我們將一個很簡單的類通過Web服務發布,類中只有一個名稱為hello函數,函數的返回值為JDOM模型的Element。代碼如下:
package test;
import org.jdom.*;
import java.rmi.RemoteException;
public class Sample1 implements java.rmi.Remote{
public Sample1() {
}
public Element hello(String name){
Element root=new Element("root");
Element hello=new Element("hello");
hello.setText("hello,"+name+"!");
root.addContent(hello);
return root;
}
}
關於如何將一個類發布成Web服務,在此並不進行介紹,相信讀者可以自己完成,我們只關注如何將序列化/反序列化器加入到我們的Web服務中。打開web服務的配置文件server-config.xml,編輯關於Sample1的服務的配置部分:
<service name="Sample1" type="" regenerateElement="true"
provider="java:RPC" style="rpc" use="encoded">
<parameter name="scope" value="Request" regenerateElement="false"/>
<parameter name="className" value="test.Sample1" regenerateElement="false"/>
<parameter name="allowedMethods" value="*" regenerateElement="false"/>
<typeMapping
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
qname="ns1:Element"
languageSpecificType="java:org.jdom.Element"
serializer=
"org.apache.axis.encoding.ser.JDomElementSerializerFactory"
deserializer=
"org.apache.axis.encoding.ser."
name="Element" regenerateElement="true"
xmlns:ns1="http://jdom.org"/>
</service>
注意上面代碼中的粗體字部分,是我們現在要添加的,它表述了如何將序列化反序列化器部署到Web服務中。
部署到Web Server
解壓縮本文後面附帶的源代碼,根目錄下有build.xml文件,讀者需要正確安裝配置好Apache Ant,然後運行
Ant make
編譯後可生成壓縮文件sample.war。將生成的war包部署到Tomcat4.1下,啟動Tomcat,本文默認的Tomcat監聽的http埠為8080。後面的客戶端測試程序也將通過連接這一埠訪問此Web服務。如果讀者的Tomcat不在8080埠上工作,那麼客戶端程序也要進行相應的修改。最後啟動Tomcat,這部分操作完成。
客戶端應用篇
下面我們將編寫客戶端程序訪問剛才部署的Web服務,講解如何把我們編寫的序列化/反序列化器載入到客戶端應用程序中,下面是客戶端調用的代碼,注意斜體字部分,是關於序列化/反序列化器的注冊過程(如果你的Web伺服器不是工作在8080埠,或採用了其他Web服務名,請自行更改下面程序中的url變數中的值),我們在test包下創建了一個名稱為 Client的類,代碼如下:
package test;
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
import org.apache.axis.utils.Options;
import javax.xml.namespace.QName;
public class Client {
public Client() {
}
public static void main(String[] args) throws Exception{
if(args.length<1){
System.out.println("錯誤:缺少參數");
System.exit(0);
}
//Web服務的URL
String url="http://localhost:8080/sample/services/Sample1";
Service service=new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(url);
//注冊序列化/反序列化器
call.registerTypeMapping(org.jdom.Element.class,
new QName("http://jdom.org","Element"),
new org.apache.axis.encoding.ser.JDomElementSerializerFactory(),
new org.apache.axis.encoding.ser.());
//設置調用方法
call.setOperationName(
new javax.xml.namespace.QName("http://test", "hello"));
//Web服務調用
java.lang.Object _resp = call.invoke(new java.lang.Object[] {args[0]});
//輸出到屏幕
org.jdom.output.XMLOutputter out=new org.jdom.output.XMLOutputter();
out.output( (org.jdom.Element) _resp, System.out);
}
}
編譯後運行該程序,在控制台窗口工程的根目錄下輸入
run world ( 其中"world"為調用常式中API的入口參數)
經過一次web通訊,一兩秒後屏幕將顯示運行結果:
<root>
<hello>hello,world!</hello>
</root>
至此我們完成了一次Web服務的訪問過程。如果在程序執行過程中,我們用TCP Moniter之類的工具監視這一次訪問中的在網路中流入流出的數據,可以看到客戶端發起調用的xml數據流如下:
POST /sample/services/Sample1 HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml,
application/dime, multipart/related, text/*
User-Agent: Axis/1.1
Host: 127.0.0.1
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 430
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv=
"http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:hello soapenv:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://test">
<name xsi:type="xsd:string">world</name>
</ns1:hello>
</soapenv:Body>
</soapenv:Envelope>
伺服器端返回的結果的XML輸出流如下:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Date: Wed, 31 Mar 2004 06:42:18 GMT
Server: Apache Coyote/1.0
Connection: close
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv
"http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:helloResponse soapenv:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://test">
<ns1:helloReturn href="#id0"/>
</ns1:helloResponse>
<multiRef id="id0" soapenc:root="0" soapenv:encodingStyle=
"http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns2:Element"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://jdom.org">
<root>
<hello>hello,world!</hello>
</root>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
結語
以上詳細講解了Axis的序列化/反序列化器的開發過程,相信讀者已經從中學到了不少知識,並能夠應用於自己的項目開發中去。通過掌握這一技術,我們將更為深刻的理解Axis的內部結構和Web服務的工作機理,這些經驗是市面上那些泛泛的講解JAVA Web服務的參考書上所學不到的。後續的文章還將向您展示一些在Java Web服務深度開發中的高級技術,讓您真正駕馭Axis。
參考資料
附件中提供了本文中的全部源碼,它是一個完整的工程,可以參考學習。
在apache的網站您可以獲得最新的Axis庫及其開發文檔:http://ws.apache.org/axis/ 本文中提到的Tomcat Web伺服器可以在這里免費獲得:http://jakarta.apache.org/tomcat/index.html
《IBM DEVELOPWORK》中一個關於web服務的教程《從JAVA類創建web服務》,是您快速掌握Web服務開發的很好教材,初學者可以進行學習。
JDOM類庫可以去www.jdom.org下載,CSDN上有一篇不錯的文章可以讓您快速掌握JDOM的使用方法。http://www.csdn.net/develop/Read_Article.asp?Id=13806
3. 蘋果手機是什麼系統,安卓系統又是什麼
蘋果是自己開發的IOS系統,安卓是谷歌推出的用於移動設備的系統。
iOS是由蘋果公司開發的移動操作系統。蘋果公司最早於2007年1月9日的Macworld大會上公布這個系統,最初是設計給iPhone使用的,後來陸續套用到iPod touch、iPad上。
安卓(android)是一種基於Linux內核(不包含GNU組件)的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
iOS系統的優勢
1、軟體與硬體整合度高
iOS系統的軟體與硬體的整合度相當高,使其分化大大降低。這樣也增加了整個系統的穩定性,手機很少出現死機、無響應的情況。
2、界面美觀、易操作
蘋果在界面設計上投入了很多精力,無論是從外觀性還是到易用性,iOS都致力於為使用者提供最直觀的用戶體驗。
3、安全性強
蘋果對iOS生態採取了封閉的措施,並建立了完整的開發者認證和應用審核機制,因而惡意程序基本上沒有登台亮相的機會。iOS設備使用嚴格的安全技術和功能,並且使用方便。
4、應用數量多、品質高
iOS平台擁有數量龐大的app和第三方開發者,幾乎每類app都有數千款。
4. htc內核源代碼,二進制文件tar.怎麼刷機
那個文件不需要解壓啊只用把整個壓縮包解壓,里邊的Android文件夾直接放在卡的根目錄下Shubcraft的ROM第一次啟動都比較長,要有耐心原因是這個人做的ROM是在第一次啟動時自己生成IMG文件的,原始壓縮包都特別小而其他人坐的ROM是本來就有個IMG在文件夾里的,不需要花時間去生成它 查看更多答案
5. 誰知道HTC(國產)機用的操作系統的源代碼
HTC不是國產的。如果是原產的HTC,裡面的系統可能是Android的系統,代碼可以在谷歌搜索到。
6. HTC工程模式怎麼進入
一、在撥號鍵盤中輸入*#06#,這時對話框中顯示的就是該機的IMEI串碼。
二、進入HBOOT界面,在完全關機的狀態下,按住音量下鍵不鬆手,然後按住開機鍵,直到進入上圖中所示的HBOOT界面再鬆手。
三、手機待機的時候,長按音量下鍵是播放音樂,長按音量上鍵是下一曲。
四、同時按住主屏鍵鍵+電源鍵,即可實現當前屏幕截圖。
五、長按電源鍵十秒鍾,中間彈出關機重啟按鈕無視,正常系統下面鍵盤燈閃爍,提示長按關機重啟,一會手機黑屏就重啟了;如果想進入bootloader模式,在黑屏的時候按住音量向下即可。
六、在撥號面板輸入*#*#4636#*#*進入工程模式。
7. HTC one 工程模式代碼是多少,不要*#*#4636*#*#這個
一、在撥號鍵盤中輸入*#06#,這時對話框中顯示的就是該機的IMEI串碼。
二、進入HBOOT界面,在完全關機的狀態下,按住音量下鍵不鬆手,然後按住開機鍵,直到進入上圖中所示的HBOOT界面再鬆手。
三、手機待機的時候,長按音量下鍵是播放音樂,長按音量上鍵是下一曲。
四、同時按住主屏鍵鍵+電源鍵,即可實現當前屏幕截圖。
五、長按電源鍵十秒鍾,中間彈出關機重啟按鈕無視,正常系統下面鍵盤燈閃爍,提示長按關機重啟,一會手機黑屏就重啟了;如果想進入bootloader模式,在黑屏的時候按住音量向下即可。
六、在撥號面板輸入*#*#4636#*#*進入工程模式。
工程模式釋義:
1)工程模式是一款支持android 1.5的系統安全類軟體。
2)快速進入手機的工程模式可以查看無線信號質量參數可以鎖定3G網路穩定網速隨意切換2G或者3G或者2G&3G1:查看手機無線參數信息2:查看電池信息3:查看應用使用情況4:查看wifi信息5:方便切換無線網路模式。
3)
8. htc608t 源代碼怎麼知道
不明白你的問題,所以給你兩個回答:1、前提是你會編程,懂得代碼流程和代碼函數的用途你在編寫個程序(反射),將軟體源代碼讀出來,就能知道它用了哪些函數,用了哪些方法,怎樣調用的這樣你就不是知道了它是怎麼寫的,不過編寫反射程序蠻麻煩,現在我還在研究當中一般軟體漏洞 可以用這個方法檢查出來,進行報復和修復。。。。現在的游戲外掛,就是利用這個原理編寫出來的;2、先按*#06#,然後在你的手機上會出現一個序列號給你,你就數到第七個和第八個數。 假如你的第七個和第八個數是下面對應的兩個數,那麼你的手機質量的好壞就確定了。 0,2 or 2,0代表是阿拉伯生產的,是很差的手機 0,8 or 8,0代表是德*生產的,是好一點兒的手機 0,1 or 1,0代表是芬蘭生產的,是非常好的手機 0,0 代表是原產公司生產的,是質量最好的手機(原裝手機) 1,3 代表是阿賽拜疆生產的,是非常非常差的手機♀
9. HTC工程模式怎麼進 HTC手機進入工程模式方法
HBOOT模式
關閉手機電源,部分手機需要取出電池,稍等五秒鍾後放入電池。
在手機關閉狀態下,用手同時按下音量向下鍵和電源鍵,長按,直到進入HBOOT。
FASTBOOT模式
首先進入到HBOOT模式,關閉手機電源,部分手機需要取出電池,稍等五秒鍾後放入電池。
在手機關閉狀態下,用手同時按下音量向下鍵和電源鍵,長按,直到進入HBOOT。
使用音量鍵「+」「-」,選擇FASTBOOT,按動電源鍵進入FASTBOOT模式。
第二種方式,啟動完美刷機,點擊實用工具→引導模式,即可重啟至fast boot模式
Recovery模式
首先進入到HBOOT模式,關閉手機電源,部分手機需要取出電池,稍等五秒鍾後放入電池。
在手機關閉狀態下,用手同時按下音量向下鍵和電源鍵,長按,直到進入HBOOT。
使用音量鍵「+」「-」,選擇Recovery,按動電源鍵進入Recovery模式。
第二種方式,啟動完美刷機,點擊實用工具→恢復模式,即可重啟至Recovery模式
10. HTC手機如何進入手機工程模式
你好,對於初用手機者可以用以下方法進入工程模式: 說到工程模式,好多非技術流的玩家都很頭疼。手機工程模式給人的印象就是生硬的黑白屏,全屏的英文和代碼命令,就像視窗重新回到了DOS系統,雖然好奇但又怕手機變磚。 其實Android系統有一個對大多數玩家敞開的工程測試模式,在這個模式下雖然無法真正體會到工程模式的全部功能,但一些基本的功能還是具備的,特別是實用的電池測試、CPU測試等等。下面以電池測試為例子教大家快速進入工程測試模式。 首先進入操作系統的撥號「Dialer」界面,輸入*#*#4636#*#*即可快速進入Android的工程測試模式。在菜單中有手機信息、電池信息、電池歷史記錄、使用情況統計數據四個選項(各不同版本的ROM可能在表述上存在差異),點擊第二項電池信息進入,就可以看到目前電池的使用狀態了,包括電量等級、電池狀態、溫度、電池材質、電壓等等信息。