成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

術(shù)語(yǔ)匯編 J2ME PIM概論

開(kāi)發(fā) 前端
本文向大家簡(jiǎn)單介紹一下J2ME PIM的概念,PIM的意思是personal infomation management(個(gè)人信息管理),主要是針對(duì)用戶的重要信息,例如通信錄、提醒、日程等。

這里和大家分享一下J2ME PIM的概念,根據(jù)JSR75的定義,Personal Information Management(PIM)API提供了一種訪問(wèn)移動(dòng)設(shè)備上的本地個(gè)人數(shù)據(jù)的方法,這些數(shù)據(jù)包括Contacts數(shù)據(jù)、Tasks數(shù)據(jù)和Appointments數(shù)據(jù)等等。

J2ME PIM概論

根據(jù)JSR75的定義,Personal Information Management(PIM)API提供了一種訪問(wèn)移動(dòng)設(shè)備上的本地個(gè)人數(shù)據(jù)的方法,這些數(shù)據(jù)包括Contacts數(shù)據(jù)、Tasks數(shù)據(jù)和Appointments數(shù)據(jù)等等。在本文中,我們將仔細(xì)審視這個(gè)API,討論有關(guān)PIM MIDlet的開(kāi)發(fā)、安全和部署問(wèn)題,并比較PIM和另一個(gè)J2MEAPI——RecordManagementStore(RMS)。

移動(dòng)環(huán)境中的Personal Information Management(PIM)

  隨著新設(shè)備不斷上市,在移動(dòng)設(shè)備上提供AddressBook、Calendar和TaskList成為了一項(xiàng)必然的要求。J2ME應(yīng)用程序也需要訪問(wèn)這些數(shù)據(jù)??蛇x包JSR75 Personal Information Management(PIM)提供了這個(gè)功能。

  它不僅允許訪問(wèn)包含聯(lián)系人、約會(huì)和任務(wù)的本地個(gè)人信息,還允許訪問(wèn)基于附加到設(shè)備上的SIM卡和Local and Remote Personal Information數(shù)據(jù)庫(kù)的信息。

  PIM包支持從vCard和vCalendar導(dǎo)入和導(dǎo)出數(shù)據(jù),vCard和vCalendar分別是AddressBook和Calendar的Internet標(biāo)準(zhǔn)格式。它還擁有阻止未授權(quán)類檢索個(gè)人信息的安全特性。

  另一個(gè)可選包JSR75 File Connection提供一種訪問(wèn)本文探討范圍之外的本地文件系統(tǒng)的方法。

J2ME PIM包

  Java PIM包通過(guò)javax.microedition.pim包表示。

  這個(gè)包定義的重要接口包括:

  Contact——這個(gè)接口表示AddressBook上的單個(gè)聯(lián)系人。

  ContactList——這個(gè)接口表示AddressBook,這是一個(gè)Contact列表。

  Event——這個(gè)接口表示單個(gè)CalendarEvent。

  EventList——這個(gè)接口表示一個(gè)Calendar事件列表。

  ToDo——這個(gè)接口表示TaskList中的單個(gè)Task。

  ToDoList——這個(gè)接口表示Task列表。

  這個(gè)包定義的主要類是:

  PIM——PIM類定義一些方法,用于創(chuàng)建一個(gè)所有現(xiàn)有列表的索引,打開(kāi)并編輯那些列表,將其作為來(lái)自vCard和vCalendar(Contact和Calendar的Internet標(biāo)準(zhǔn))的導(dǎo)入或?qū)С觥?p#

Contact和ContactList

  一個(gè)Contact表示AddressBook中的單個(gè)條目。Contact中的主要字段是Name、Address、Email、Birthday、Photo和Telephone。

  為了確??缙脚_(tái)可移植性,建議使用SuperInterfacePIMList提供的方法isSupportedField()。

  清單1展示如何向AddressBook添加一個(gè)Contact:

  清單1.將Contact添加到AddressBook

  1. ContactListaddressBook=null;  
  2. try{  
  3. addressBook=(ContactList)PIM.getInstance().openPIMList(PIM.CONTACT_LIST,  
  4. PIM.READ_WRITE);  
  5. }catch(PIMExceptione){  
  6. //ExitApplication  
  7. }  
  8.  
  9. ContactsingleContact=addressBook.createContact();  
  10. String[]name=newString[addressBook.stringArraySize(Contact.NAME)];  
  11.  
  12. if(addressBook.isSupportedField(Contact.NAME_FORMATTED)  
  13. singleContact.addString(Contact.NAME_FORMATTED,  
  14. PIMItem.ATTR_NONE,"Mrs.JaneDoe");  
  15.  
  16. ThecreateContact()methodcreatesatemporaryemptyContact.Acommit()callmakes  
  17. theContactdatapersistent.Itisadvisabletoclosethelistsbyinvokingtheclose()  
  18. methodafternecessaryoperationshavebeenperformed.  
  19.  
  20. try{  
  21. singleContact.commit();  
  22. }catch(PIMExceptione){  
  23. //Exceptionoccured  
  24. }  
  25. try{  
  26. //Othercleanuptasks  
  27. addressBook.close();  
  28. }catch(PIMExceptione){  
  29.  
  30. }  
  31.  
  32.     
  33.  

Event和EventList

  一個(gè)Event表示Event數(shù)據(jù)庫(kù)中的單個(gè)條目,比如,移動(dòng)設(shè)備上的日歷。Event中的關(guān)鍵字段是Location、Summary、Startdate、EndDate和Alarmnotification。清單2展示如何向Event數(shù)據(jù)庫(kù)添加一個(gè)Event。

  清單2.添加一個(gè)Event

  1. EventListeventList=null;  
  2. try{  
  3. eventList=(EventList)PIM.getInstance().openPIMList(PIM.EVENT_LIST,  
  4. PIM.READ_WRITE);  
  5. }catch(PIMExceptione){  
  6. return;  
  7. }  
  8. EventsingleEvent=eventList.createEvent();  
  9. if(eventList.isSupportedField(Event.SUMMARY))  
  10. singleEvent.addString(Event.SUMMARY,PIMItem.ATTR_NONE,"JavaTraining");  
  11. if(eventList.isSupportedField(Event.START))  
  12. singleEvent.addDate(Event.START,PIMItem.ATTR_NONE,aDate.getTime());  
  13. if(eventList.isSupportedField(Event.END))  
  14. singleEvent.addDate(Event.END,PIMItem.ATTR_NONE,aDate.getTime());  
  15.  
  16. try{  
  17. singleEvent.commit();  
  18. }catch(PIMExceptione){  
  19. //Anerroroccured  
  20. }  
  21. try{  
  22. eventList.close();  
  23. }catch(PIMExceptione){  
  24.  
  25. }  
  26.     
  27.  

#p#ToDo和ToDoList

  ToDo接口表示移動(dòng)設(shè)備上的Task數(shù)據(jù)庫(kù)中的單個(gè)任務(wù),重要的字段是NoteorSummary、Priority、CompletionDate、DueDate和whethercompleted。清單3展示如何向數(shù)據(jù)庫(kù)持久化添加一個(gè)ToDo。

  清單3.添加一個(gè)Task

  1. ToDoListtasks=null;  
  2. try{  
  3. tasks=(ToDoList)PIM.getInstance().openPIMList(PIM.TODO_LIST,  
  4. PIM.READ_WRITE);  
  5. }catch(PIMExceptione){  
  6. //Anerroroccurred  
  7. return;  
  8. }  
  9. ToDosingleTask=tasks.createToDo();  
  10. if(tasks.isSupportedField(Event.SUMMARY))  
  11. singleTask.addString(ToDo.SUMMARY,PIMItem.ATTR_NONE,"ShoppingforHalloween");  
  12. if(tasks.isSupportedField(Event.DUE))  
  13. singleTask.addDate(ToDo.DUE,PIMItem.ATTR_NONE,newDate().getTime());  
  14.  
  15. try{  
  16. singleTask.commit();  
  17. }catch(PIMExceptione){  
  18. //Anerroroccured  
  19. }  
  20. try{  
  21. tasks.close();  
  22. }catch(PIMExceptione){  
  23.  
  24. }  
  25.     
  26.  

PIM與RMS的區(qū)別

  在繼續(xù)討論之前,我們先回顧一下J2ME提供的另一個(gè)關(guān)鍵功能,RecordManagementStore(RMS)概念。RMS允許J2ME應(yīng)用程序持久地本地存儲(chǔ)數(shù)據(jù)。RMS包含以下組件:

  Records——與每條記錄擁有一個(gè)或多個(gè)字段的數(shù)據(jù)庫(kù)系統(tǒng)不同,RMS中的一條Record是一個(gè)單獨(dú)的數(shù)據(jù)字段。它沒(méi)有一個(gè)預(yù)先定義的數(shù)據(jù)類型或大小,可以包含任意數(shù)據(jù)。

  RecordStore——RecordStore是一個(gè)Records集合,可以通過(guò)J2ME應(yīng)用程序根據(jù)名稱訪問(wèn)。

  以下是PIM和RMS的區(qū)別,盡管二者都負(fù)責(zé)在設(shè)備上存儲(chǔ)持久數(shù)據(jù)。

  PIM向(從)AddressBook、Calendar和TaskList等已定義的實(shí)體存儲(chǔ)(和檢索)數(shù)據(jù)。而另一方面,RMS向(從)一個(gè)常規(guī)數(shù)據(jù)庫(kù)存儲(chǔ)(和檢索)數(shù)據(jù)。PIM中的單個(gè)實(shí)體是一個(gè)Contact、Calendar條目或一個(gè)Task,而在RMS中,單個(gè)實(shí)體是一個(gè)字節(jié)數(shù)組。

  PIM并不局限于本地設(shè)備,它可以訪問(wèn)一個(gè)附加SIM或另一個(gè)遠(yuǎn)程設(shè)備中的數(shù)據(jù)。RMS只能訪問(wèn)本地設(shè)備中的數(shù)據(jù)。

  PIM可以從vCalendar或vContact等外部源導(dǎo)入或?qū)С?,而RMS沒(méi)有任何Export或Import功能。

  與RMS相比,PIM中的數(shù)據(jù)解釋更加靈活。例如,一個(gè)Contact(以標(biāo)準(zhǔn)格式定義)總是可以由另一個(gè)J2ME應(yīng)用程序輕松解釋。而RMS中的記錄是字節(jié)數(shù)組,其他J2ME應(yīng)用程序需要擁有關(guān)于如何解釋它的信息。#p#

  一個(gè)示例——添加一個(gè)聯(lián)系人

  在這個(gè)小節(jié)中,我們將討論此前提到過(guò)的一個(gè)方法addContact(),展示如何向AddressBook添加一個(gè)聯(lián)系人。當(dāng)在表單中提交一個(gè)用戶命令時(shí),這個(gè)方法(見(jiàn)清單4)將在一個(gè)單獨(dú)的線程中調(diào)用。這個(gè)方法訪問(wèn)通過(guò)UITextfields字段輸入的數(shù)據(jù)。

清單4.addContact()方法

  1. //Import  
  2. importjavax.microedition.lcdui.*;  
  3. importjavax.microedition.midlet.*;  
  4. importjavax.microedition.pim.*;  
  5.  
  6.  
  7. //Textinput  
  8. TextFieldnameField;  
  9. TextFieldphoneField;  
  10.  
  11. …  
  12.  
  13. publicvoidaddContact(){  
  14.  
  15. ContactListcontacts=null;  
  16.  
  17. try{  
  18. contacts=(ContactList)PIM.getInstance().openPIMList(PIM.CONTACT_LIST,  
  19. PIM.READ_WRITE);  
  20. }catch(PIMExceptione){  
  21. //Anerroroccurred  
  22. e.printStackTrace();  
  23. }  
  24.  
  25. Contactcontact=contacts.createContact();  
  26.  
  27. String[]name=newString[contacts.stringArraySize(Contact.NAME)];  
  28.  
  29. if(contacts.isSupportedArrayElement(Contact.NAME,Contact.NAME_GIVEN))  
  30. name[Contact.NAME_GIVEN]=nameField.getString();  
  31.  
  32. if(contacts.isSupportedField(Contact.TEL))  
  33. contact.addString(Contact.TEL,Contact.ATTR_HOME,phoneField.toString());  
  34.  
  35. try{  
  36.  
  37. contact.commit();  
  38.  
  39. }catch(Exceptione){}  
  40.  
  41. }  
  42.  
  43.  

#p#運(yùn)行時(shí)和安全問(wèn)題

  PIM MIDlet應(yīng)該在一個(gè)支持PIM的配置(即JSR75)中運(yùn)行。我們通過(guò)在Sun的WirelessToolkit2.5上先單擊Settings然后單擊APISelection來(lái)選擇以下設(shè)置。選擇PIM MIDlet要運(yùn)行的移動(dòng)設(shè)備時(shí)使用相同的方法。

PIM MIDlet Runtime API Selection

圖1.PIM MIDlet Runtime API Selection

  MIDlet需要其他權(quán)限才能讀寫Contacts、Calendar或TaskLists,可以通過(guò)在WirelessToolkit中單擊Settings并選擇Permissions來(lái)設(shè)置相關(guān)權(quán)限。這里提供了用于ContactList、EventList和TodoList的所有Read和Write權(quán)限。

PIM MIDlet安全問(wèn)題

圖2.PIM MIDlet安全問(wèn)題

結(jié)束語(yǔ)

  在本文中,我們討論了J2ME中的另一個(gè)重要功能Personal Information Management(PIM),該功能允許訪問(wèn)移動(dòng)設(shè)備上形式為Contact、Task和Event的本地?cái)?shù)據(jù)。本文還比較了PIM和RMS,后者是處理設(shè)備數(shù)據(jù)的另一個(gè)功能?,F(xiàn)在,您可以通過(guò)PIM自帶的導(dǎo)入和導(dǎo)出功能同步J2ME應(yīng)用程序和vCard以及vCalendar,后兩者分別是Contact和Calendar的Internet標(biāo)準(zhǔn)格式。***,我們介紹了運(yùn)行時(shí)的安全和部署要求。
 

【編輯推薦】

  1. J2ME可選包—PIM用法詳解
  2. J2ME開(kāi)發(fā)環(huán)境搭建必備手冊(cè)
  3. 解析J2ME各大應(yīng)用平臺(tái)環(huán)境
  4. MotorolaJ2ME開(kāi)發(fā)時(shí)需要注意的幾個(gè)細(xì)節(jié)
  5. Java2平臺(tái)J2SE、J2EE、J2ME三大版本的區(qū)別

 

 

責(zé)任編輯:佚名 來(lái)源: ibm.com
相關(guān)推薦

2010-09-30 10:25:40

J2ME3D

2010-09-29 13:23:12

J2MEPIM

2010-09-29 08:57:04

J2ME前景

2010-06-07 13:02:46

Hadoop簡(jiǎn)介

2010-08-05 14:51:36

AdobeFlex

2010-09-29 09:19:39

J2ME開(kāi)發(fā)工具

2010-07-13 10:21:19

2010-09-17 09:19:08

Java API

2010-06-10 18:27:00

UML語(yǔ)言

2010-07-19 16:56:56

Perl線程

2010-07-26 16:54:15

Perl引用

2010-07-27 08:59:19

FlexBuilder

2010-08-10 10:32:02

Flex語(yǔ)言

2010-09-30 13:28:55

J2ME圖形

2009-06-23 11:30:16

RMSJ2ME

2009-03-22 09:38:03

Android移植J2ME

2010-09-30 09:56:26

J2ME Polish

2009-06-08 21:34:09

J2EEJ2SEJ2ME

2010-06-11 09:33:47

UML順序圖

2010-06-29 15:06:14

UML建模
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩国产精品一区二区三区 | 亚洲国产一区二区三区 | 一级黄色片在线免费观看 | 久久精品| 一区二区中文 | 国产欧美日韩精品一区 | 一级黄色片在线看 | 日韩成人免费视频 | 99视频在线免费观看 | 久久精品av麻豆的观看方式 | 天天操伊人| 欧美日韩成人影院 | 男人天堂国产 | 精品一区二区三区四区五区 | 亚洲二区在线 | 精品视频在线一区 | 免费黄色大片 | 欧美在线一区视频 | 午夜丰满寂寞少妇精品 | 国产h视频 | 欧美美女二区 | 成人国产午夜在线观看 | 中文字幕亚洲视频 | 日韩不卡在线观看 | 欧美一区二区免费电影 | 亚洲精品久久久久久国产精华液 | 亚洲欧洲成人av每日更新 | 国产精品人人做人人爽 | 国产精品久久国产精品 | 日韩免费视频一区二区 | 日本成人免费网站 | 91久久电影 | 亚洲视频一区在线观看 | 亚洲国产精品一区二区第一页 | 97超碰在线播放 | 免费观看色 | 亚洲一区二区三区桃乃木香奈 | 亚洲精品视频一区二区三区 | 最近免费日本视频在线 | 综合精品| 99精品视频一区二区三区 |