Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ......

88
UMEÅ UNIVERSITY Department of Computing Science SE‐901 87 UMEÅ SWEDEN Media Browser on Android Platform Master Thesis in Computing Science, 30 ECTS Credits MALIN BERGGREN May 2008 SUPERVISOR AT CS‐UMU Jerry Eriksson SUPERVISOR AT TACTEL Mattias Ohlsson EXAMINER Per Lindström

Transcript of Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ......

Page 1: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

UMEÅ UNIVERSITYDepartment of Computing Science 

SE‐901 87 UMEÅ SWEDEN 

            

Media Browser on Android Platform 

Master Thesis in Computing Science, 30 ECTS Credits  

MALIN BERGGREN May 2008 

 

 

 

  

     

SUPERVISOR AT CS‐UMU  Jerry Eriksson 

SUPERVISOR AT TACTEL  Mattias Ohlsson EXAMINER 

Per Lindström 

 

Page 2: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610
Page 3: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

i Abstract 

Abstract

At  the moment  the  Open  Handset  Alliance  is  developing  a  new  platform  for mobile  devices.  The  platform  has  a  Linux  kernel  and  uses  the  Java  language  for implementation of the application. Tactel  is a company that develops applications for mobile devices and provides solutions to many of the world's mobile handset vendors.  The development of mobile device applications  is a  constantly  changing market and the developers have  to be able  to make applications  for a  lot of different platforms available on the market. Concerning the Android platform Tactel wants to know if their graphic engine is portable to this new platform.  

This report consists of an investigation of differences between Java Micro Edition (JME) and Android and a description of the work of porting a graphic engine and using this engine to develop a media browser.    

Page 4: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 ii  Abstract 

   

Page 5: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

iii Abstract 

 

Table of Contents 

1. 0Introduction .................................................................... 51 

2. 1Background of the project ............................................... 63 

22.1  Android .............................................................................. 64 

32.2  Graphic Engine .................................................................... 64 

42.3  Unified Media Bar ................................................................ 64 

3. 5Problem description ........................................................ 65 

63.1  Android and JME investigation ............................................... 66 

73.2  Porting ............................................................................... 66 

83.3  Implementation of application ............................................... 66 

4. 9Methods .......................................................................... 69 

14.1  Android and JME investigation .............................................. 610 

14.2  Porting of Graphic Engine ..................................................... 710 

14.3  Reusable components .......................................................... 710 

14.4  Media browser .................................................................... 710 

5. 1Investigation................................................................. 711 

15.1  Overview of Java Micro Edition .............................................. 712 

15.2  Overview of Android ............................................................ 713 

15.3  Overview of package, class and methods comparison ............... 730 

15.4  Comparison ....................................................................... 714 

15.4.1  Project files ....................................................................................................... 715 

25.4.2  Application user interface structure ................................................................ 717 

25.4.3  Displaying graphics ........................................................................................... 820 

25.4.4  Key event handling ........................................................................................... 821 

25.4.5  Multimedia support ......................................................................................... 821 

25.4.6  File access ......................................................................................................... 822 

25.4.7  Communication ................................................................................................ 824 

25.4.8  Request assets .................................................................................................. 825 

25.4.9  Reuse of applications functionality .................................................................. 826 

25.4.10  Permissions and security .................................................................................. 827 

25.4.11  Other functionality ........................................................................................... 829 

 

Page 6: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 iv  Abstract 

6. 3Porting .......................................................................... 831 

36.1  Porting from JME to Android ................................................. 932 

36.2  Porting of graphical engine from JME to Android ...................... 932 

36.2.1  Media player ...................................................................................................  932 

36.2.2  Graphics ...........................................................................................................  934 

36.2.3  Key handling ....................................................................................................  935 

36.2.4  File access ........................................................................................................  936 

7. 3Implementation of the application ................................ 937 

37.1  Reusable components .......................................................... 938 

37.1.1  Layers ..............................................................................................................  938 

47.1.2  Affectors ..........................................................................................................  938 

47.1.3  Collectors .........................................................................................................  139 

47.1.4  Nodes ..............................................................................................................  139 

47.2  Media browser .................................................................... 140 

47.2.1  Application structure .......................................................................................  140 

47.2.2  Application functionality .................................................................................  143 

8. 4Result ............................................................................ 145 

48.1  Android Media Browser ........................................................ 146 

48.1.1  Starting the application after shutdown .........................................................  146 

48.1.2  Video ...............................................................................................................  146 

58.1.4  Music ...............................................................................................................  150 

58.1.5  Pictures ............................................................................................................  154 

58.1.6  Settings ............................................................................................................  154 

9. 5Final comments ............................................................. 157 

59.1  Limitations ......................................................................... 158 

59.2  Future work ....................................................................... 158 

5Acknowledgements ............................................................ 159 

5References ......................................................................... 161 

5Appendix ............................................................................ 165 

 

   

Page 7: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

v List of Figures 

List of Figures

1Figure 3.3.1 Sony Ericsson W910i UMB (1) ............................................................................ 16 

Figure 5.2.1 Android platform architecture.................................................................... 13 

Figure 5.4.2 Displayable and its subclasses. ................................................................... 18 

Figure 5.4.4 View hierarchy in Android .......................................................................... 19 

Figure 5.4.3 Viewing of content in Android.  .................................................................. 19 

Figure 5.4.4 View hierarchy in Android .......................................................................... 19 

1Figure 6.2.1 Stages of a player in JME. ........................................................................... 133 

1Figure 6.2.2 Stages of MediaPlyer in Android ................................................................ 133 

1Figure 7.2.1 The structure of AMB.  ................................................................................ 140 

1Figure 7.2.2 The structure of the music part of AMB ..................................................... 141 

1Figure 7.2.3 Structure of the pictures part of AMB. ....................................................... 142 

1Figure 7.2.4 Structure of the video part of AMB. ........................................................... 143 

1Figure 7.2.5 The main class of AMB. ............................................................................... 143 

1Figure 7.2.6 The layers implemented in AMB ................................................................ 144 

1Figure 7.2.7 The nodes implemented in AMB. ............................................................... 144 

1Figure 8.1.1 The main menu of AMB. ............................................................................. 147 

1Figure 8.1.2 The video menu. ......................................................................................... 148 

1Figure 8.1.3 The list of videos on the external media. ................................................... 148 

1Figure 8.1.4 AMB Video player view.  ............................................................................. 149 

1Figure 8.1.5 The music menu .......................................................................................... 149 

1Figure 8.1.6 Artists chosen from the music menu shows the currently available .......... 151 

1Figure 8.1.7 An artist is chosen and all tracks from that artist is shown.  ...................... 151 

1Figure 8.1.8 When a track is chosen all the songs of the list is added to the player ...... 152 

1Figure 8.1.9 The playlist view.  ........................................................................................ 152 

1Figure 8.1.10 When creating a new playlist the list should first be given a  .................. 153 

1Figure 8.1.11 When the list has a name the tracks are chosen from the list of tracks. . 53 

Figure 8.1.12 The picture menu, showing how many images there are in the category.54 

Figure 8.1.13 The view showing images in a grid, the selected image in the centre. .... 55 

Figure 8.1.14 The view of an image in full size or as large the screen allows. ............... 55 

Page 8: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 vi  List of Figures 

   

Page 9: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

vii List of tables 

List of tables

Table 3.3.1 Menu items .................................................................................................... 7 

Table 5.1.1 JSRs included in the full MSA in JSR 248 ...................................................... 12 

 

 

 

 

Page 10: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 viii  List of tables 

 

Page 11: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

ix Abbreviations 

Abbreviations

Abbreviation  Description AMB  Android Media Browser API  Application Programming Interface APK  The Android package file extension CLDC  Connected Limited Device Configuration DRM  Digital Rights Management HTTP  HyperText Transfer Protocol JAD  Java Application Descriptor JAR  Java Archive JCP  Java Community Process  JDBC  Java database connectivity JDK  Java Developers Kit JME, J2ME  Java Micro Edition JSR  Java Specification Requests MIDlet   An application of the MIDP MIDP  Mobile Information Device Profile MMS  Multimedia Messaging Service MSA  Mobile Service Architecture OS  Operation System PKI  Public Key Infrastructure SAX  Simple API for XML SDK  Software Development Kit SMS  Short Message Service SOAP  A  protocol  for  exchanging  XML‐based  messages 

(once stood for Simple Object Access Protocol) SQL  Structured Query Language UI  User Interface URL  Uniform Resource Locator UMB  Unified Media Bar XML  Extensible Markup Language  

Page 12: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 x  Abbreviations 

   

Page 13: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 1  

 1 

Introduction

Tactel is a developer of mobile applications and solutions and works with many of the world's major network operators and mobile handset vendors. The mobile business is a  constant  changing  area  and Tactel wants  to be  able  to meet  the  future needs.  In doing  so,  trying  new  platforms  and  being  able  to  implement  applications  for many different platforms are essential.  

This  thesis have  focused on a new platform  coming  to  the mobile market  in a near future, Android, a new mobile platform using Java for implementing applications. The thesis has been carried out at Tactels office in Umeå.  

The  thesis  involves  mobile  platforms  investigation,  porting  of  a  user  interface framework, and development of a media browser on the Android platform. The stages of the works are described in ten chapters as follows: 

Chapter 2 – Background introduces Android and tools at Tactel. Chapter 3 – Problem description introduces the problem to be discussed. Chapter 4 – Methods describes the methods of approaching the problem. Chapter 5 – Investigation compares Java Micro Edition with Android. Chapter 6 – Porting describes the porting of a graphic engine from JME to Android. Chapter  7  –  Implementation  of  the  application  describes  a  way  of  using  the engine. Chapter 8 – Result presents the result of the thesis. Chapter 9 – Final comments some final comments of the work. Chapter 10 – Acknowledgements thanks for the opportunity. 

Page 14: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

2  Introduction  

 

 

Page 15: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 2  

 3 

Background of the project

This  chapter  gives  some  background  information  on  technologies  and  products connected  to  the  thesis.  It  gives  an  introduction  to Android  and  the Open Handset Alliance  and  the  graphical  engine  mentioned  throughout  the  project.  Some background of what is on the mobile device market, at the moment, when it comes to media browsers is given as well. 

   

Page 16: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

4  Background of the project  

2.1 Android The Open Handset Alliance, consisting of 30 companies and among them Google, has recently announced their new open source platform for mobile devices. The purpose of this alliance  is to develop and support open technologies that will enhance mobile devices, making it easier bringing new technology and applications to the market. The project  of  the  alliance  is  named  Android,  an  open  source  platform  for  developing applications for mobile devices. Android consists of an operating system, middleware and  key  applications.  The  operating  system  at  the  core  of  the  Android  platform  is Linux. Applications are written in Java and an amount of new APIs has been created for Android, and an SDK with emulator exists for development (2).  

So far, most Java programs for mobile devices have been written for Sun’s Java Micro Edition  (JME)  platform.  This  platform  is  quite  good,  but  one  of  the  reasons  for developing Android  is the fact that the developers think  it takes Sun too  long to add new API’s to JME. Another reason is that the implementation of the platform differs a lot between different manufacturers where  some  include more  advanced APIs  than others. 

2.2 Graphic Engine The  graphic  engine mentioned  in  this  report  is  a  graphic  engine,  implemented  by SouthEnd  a  Tactel  subsidiary,  for  creating media  browsers  and  other  graphic  user interfaces for mobile devices. This engine  is originally  implemented  in JME but has as well been ported to other programming languages. 

The engine has functions for creating graphic user interfaces by adding different nodes to the display, the nodes can be moved on the display, transformed and changed. It is also  possible  to  group  nodes  for movements.  Functions  for  playing media  files  and working with files locally and using http is also a part of the graphic engine. 

2.3 Unified Media Bar Mobile phones now days are not used only for making calls. The devices are rather a small computer or a combination of a phone, mp3‐player and a camera. Many mobile devices  do  as  well  have  access  to  Internet  and  so  both  offline  and  online  media content are available in the device. Manufacturers are striving towards creating more and  more  user  friendly  interfaces  for  handling  these  media.  Examples  of  media content that  is common  in mobile devices are  images, music, ring tones, videos, and TV‐ and radio channels.  

One example of a device with a next generation Media Browser,  the Unified Media Bar,  is the Sony Ericsson W910i. This Media Browser allows the user to navigate and view all type of content in a single application (3). 

   

Page 17: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 3  

 5 

Problem description

With the Open Handset Alliance  launching a new mobile platform, Android, software developers  should  be  able  to  offer  software  also  for  this  platform.  To  make  this economically  it would be preferred  if existing engines can be used also  for  this new platform. The developers can  then continue developing  the  same products and  they can be used on more  than one platform by porting  them  instead of writing another one. Something is said to be portable if it is less time consuming to port an application then writing a new one. 

The  three  steps  brought  out  to  investigate  the  portability  of  a  graphic  engine  are described below. The first is an investigation of Android and JME and their portability, then  porting  a  graphical  engine  and  at  the  end  using  the  graphical  engine  for implementation of a media browser in Android. 

 

 

 

   

Page 18: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

6  Problem description  

3.1 Android and JME investigation The goal of this thesis is to make an investigation of the similarities and differences in Java Micro Edition  (4) and Android  (5). The focus of the investigation is to find out how much work  it  is  to  port  a  JME  application  to  Android.  The  porting  investigation  is focused on porting from JME to Android, not in the other direction.  

The  investigation also covers application security model and Android SDK multimedia support, information that are of interest in the following tasks. 

3.2 Porting Tactel has developed a graphics engine  for  Java Micro Edition. The question  is  if  it  is portable  to Android.  In  this  step  it  should be  investigated what  it  takes  to port  this specific engine to Android. The engine will then be ported and the ported and adapted engine will be used by the Media Browser application in the next step. 

3.3 Implementation of application This third and last part of the problem is to use the ported graphic engine to develop an  application  that  list  contents  stored  on  the  device,  in  particular  sounds  and pictures.  The  graphical  user  interface  for  the  application  shall  be  similar  to  UMB (Unified Media Bar), which is a graphical user interface used by Sony Ericsson.  

The interface of the Unified Media Bar in a Sony Ericsson W910i can be seen in Figure 3.3.1.  This media  browser  serves  as  the  starting  point  for  the  development  of  the media browser of this project called Android Media Browser (AMB). The user interface of the AMB will be a  look‐a‐like user  interface of the unified media bar as well as the features. 

 

 

Figure 3.3.1 Sony Ericsson W910i UMB (1) 

Page 19: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

7 Problem description 

The Android Media Browser  (AMB) should have  the menu shown  in Table 3.3.1. The focus will be on implementing the part marked as bold in the layout in Table 3.3.1.  

 

Music  Pictures  Video  Settings 

Resume  Latest photos  Resume   

Album  Camera  Videos   

Artist  Pictures  Playlists   

Tracks       

Playlists       

Table 3.3.1 Menu items 

 

Music  –  In  UMB  audio  files  can  be  displayed  sorted  by  album,  artist  or  just  in alphabetic order. The audio files can be played by clicking the chosen file. A playing file is possible to pause and then resume. Playlist can be created to play songs in a specific order. 

Pictures  ‐  In UMB  it  is possible to view the  latest photos, go to the camera to take a new picture or view all photos or all pictures. A photo is possible to get in full screen by selecting it.  

Video ‐ In UMB video files is displayed in alphabetic order. The video files are possible to play by selecting a file. A playing file can be paused and the resumed. Playlists can be created to play videos in a specific order. 

Setting  –  The  screen  can be  set  to be horizontal,  vertical or  automatic  adjusted on tilting the device. 

Of these features the AMB should be possible to extend to include all of them. In the first  implementation the focus  is on playing music and presenting the audio files. The audio files should be sorted alphabetically by song name, by album or by artist. Image files should be sorted in the category latest photos and all pictures.   

Page 20: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

8  Problem description  

 

   

Page 21: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 4  

 9 

Methods

This  chapter  describes  the method  to  carry  out  the  project  of  investigate  porting, porting  a  graphic  engine  and  implement  an  application on  the Android platform by using the ported engine.  

Page 22: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

10  Methods  

4.1 Android and JME investigation First an overview of JME and Android has to be made. To find out what it takes so port a  JME application to Android the APIs and documentations of both  JME and Android have  to  be  investigated  to  find  similarities  and  differences,  with  special  focus  on security models and multimedia support.  

Things  to  investigate are what media can be showed and played and how  is  it done. What does  the hierarchy of applications objects  for displaying objects on  the  screen look  like? Can  audio  files be played  in  the background?  Is  it possible  to  forward  an audio‐file? And other features of media. 

How  can  files be accessed  in  the  file  system?  Is  it possible  to use  files belonging  to other applications? What features of the phone is possible to use? 

The investigation is documented in chapter 5. 

4.2 Porting of Graphic Engine The graphic engine consists of a library of classes to perform tasks on different media and  graphic  files.  Since  both  JME  and  Android  uses  Java  for  implementation  some parts of the engine is reusable, but not all. Both JME and Android have some individual APIs that is not possible to use in an application for the other platform. 

The  classes  to be ported mainly performs  tasks of media  files  like  audio  and  video, graphics  like what will be  show on  the  screen and  file access. All  these  things were investigated  in  the  first  step. Now  this  should be  implemented  and  adopted  to  the graphic engine.  

The porting procedure is described in chapter 6. 

4.3 Reusable components At  the beginning of  the  implementation  reusable  components  for use  in  the media browser should be constructed. The browser will consist of a  lot of  lists so a  list class will be constructed as well as a grid. A class for retrieving images, music and video files should be constructed for later us in the browser for finding data to present. 

The reusable components are described in chapter 7. 

4.4 Media browser For implementing the media browser the ported graphics engine should be used. The reusable  components  implemented  on  top  of  the  graphic  engine  for  viewing  lists should be used when  implementing the menus of the application. Main focus will be on  determine  file  types,  playing  audio  files  and  showing  images  in  a  graphic  user interface that is similar to the Unified Media Bar in Figure 3.3.1. 

The application will be tested on the Android phone emulator from the second release M5 of the SDK and emulator for Android. 

The Android Media Browser is described in chapter 7 and 8. 

 

Page 23: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 5  

 11 

Investigation

This chapter provides  information of  the  investigation of  JME versus Android. First  is an overview of both JME and Android then a summary of the comparison. At the end of  this  chapter  is a  full description of what has been  investigated and a  comparison that goes deep in to certain parts of functionality. 

The  focus of  the  investigation  is  connected  to  the graphic engines  functionality and portability. 

Page 24: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

12  Investigation  

5.1 Overview of Java Micro Edition Java Micro Edition (JME) is Suns library for developing applications for mobile devices. There  are  two  configurations  of  JME  where  the  Connected  Limited  Device Configuration (CLDC) is the one for devices with less power. CLDC is used together with a Mobile  Information Device Profile  (MIDP). The main  class of an application  in  this type of application is a MIDlet class. The MIDlet can implement graphic user interfaces and user  interaction. A MIDlet has a display object  for handling what  is displayed on the  screen.  A  displayable  is  an  object  that  can  be  displayed  on  the  screen,  by  the display object. A MIDlet has only one display object to manage  the screen and  input system and it does not keep history of what was last screened.  

The  CLDC  and MIDP  are  often  used  together  with  some  of  the  Java  Specification Requests (JSR) defined for mobile devices. The JSR 248 (6) defines a standard set of JSRs to  be  included  in  a  device.  It  is  created  to minimize  fragmentation  of mobile  Java environments  by  defining  a  predictable  and  highly  interoperable  application  and service  environment  for  developers.  The  JSRs  included  in  the  full  mobile  service architecture  (MSA)  of  JSR  248  is  presented  in  Table  5.1.1.  The  JSR  139  CLDC  is  the Connected Limited Device Configuration and the JSR 118 MIDP is the CLDC profile for running applications on cell phones.  

In the following comparison of JME and Android the environment of the full MSA for JME will  be  used when most  new  phones  implements  this  specification.  There  are other  JSRs available  for  JME as well but most of  them will not be  considered  in  the comparison for the reason that they does not exists in most phones. 

 

JSR 139 CLDC JSR 118 MIDP JSR 75 File & PIM JSR 82 Bluetooth JSR 135 Mobile Media JSR 184 3D Graphics JSR 205 Messaging JSR 226 Vector Graphics JSR 172 Web Services JSR 177 Security & Trust JSR 179 Location JSR 180 SIP JSR 211 Content Handler JSR 229 Payment JSR 234 Multimedia Supplements JSR 238 Internationalization

Table 5.1.1 JSRs included in the full MSA in JSR 248 

 

Page 25: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

13 Investigation 

5.2 Overview of Android Android  is  a new operating  system  and platform  for mobile devices. By offering  an open source platform, with development  in  the  Java  language, Google and  the open handset alliance hopes to get in to the market of mobile devices. Android is a software stack  for  mobile  devices  that  includes  an  operating  system,  middleware  and  key applications. 

The architecture of the Android operating system and platform can be seen  in Figure 5.2.1. The  focus of  this  report  is on  the application  framework and  to  implement an application in the application layer. 

 

An  Android  application  consists  of  four  main  building  blocks  (7);  Activity  (8),  Intent Receiver (9), Service (10) and Content Provider (11). The most common part is the activity.  

An activity is the part of an application handling the graphic user interface. An activity is a class that implements  the Activity class. Every activity in the application has a user interface with a view and event response. An application consisting of three different screens  will  have  three  different  activity  classes.  Moving  to  a  new  screen  is accomplished by  starting  the new activity and when  returning an activity can  return values to the calling activity. When an activity starts another activity the calling activity 

Linux kernel

Display driver

Camera driver

Bluetooth driver

Flash memory driver

Binder (PC) driver

USB driver

Keypad driver

WiFi driver

Audio driver

Power manager

Applications

Home Contact Phone Browser AMB

Application framework

Activity manager

Window manager

Content providers

View system

Notification manager

Package manager

Telephone manager

Recource manager

Location manager

XMPP service

Libraries

Surface manager

Media framework

SQLite

OpenGL|ES

FreeType

WebKit

SGL

SSL

libc

Android runtime

Core libraries Dalvik Viritual machine

Figure 5.2.1 Android platform architecture.

Page 26: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

14  Investigation  

is  paused  and  therefore  also  put  to  the  history  stack.  Android  keeps  history  of  all activities from the home screen and forward. An activity can choose to no longer be in the  history  stack  if  so  is  needed  and will  then  be  removed.  The  user  can  navigate backwards in the history stack to see previous screens.

To move from one screen to another a special class called Intent (12) is used. The intent can be defined to start a specific activity or to find an activity that can provide what is needed. To be able to find an activity; permissions must be set to allow the application to use the activity in the way it wants to.  

An intent receiver can be used to receive intent broadcasts from other applications in the system. For example when it is midnight or when the phone rings. The application does not need to be running for the intent receivers to receive information. The intent receivers do not have a user interface, but they might use the Notification Manager to alert the user if something has happened (7). 

Services might be used for code that is long‐lived and will run without a user interface, they  are  run  in  the  background.  For  example  a media  player might want  to  keep playing the playlist even though a new activity has started. Then the player could be placed  in a service  instead of an activity. The activity will then keep playing until  it  is stopped or have reached the end of the playlist. 

To  store  and  retrieve  data  a  content  provider  (13)  can  be  used  instead  of  files  and databases. A content provider is useful if the data stored by the application should be shared  with  other  applications.  The  content  provider  has  methods  to  let  other applications  store  and  retrieve  the  type  of  data  that  is  handled  by  that  content provider. 

Two other  important parts of an android application are the AndroidManifest.xml  (14) file and the notification manager (15). 

The AndroidManifest.xml file  is the control file that tells the system what to do with all  the  top‐level  components.  It  is  a  required  file  for  an  Android  application  and  is placed  in  the  root  folder  of  the  application.  The AndroidManifest.xml  file  describes global  values,  including  the application  components and  the  implementation  classes for each component.  It does as well describe what kind of data each component can handle, and where they can be launched. 

The notification manager can notify the user by adding a small  icon  in the status bar and  the  user  can  then  use  the  notification  icon  to  receive  information  about  the notification.  The most well‐known  notifications  are  SMS messages,  call  history  and voicemail but applications can create their own notifications as well. The notification mechanism is used for getting the users attention. 

5.3 Comparison This  section  contains  a pretty detailed  comparison of  JME  and Android on package, class and method  level. Not all part of the JME and Android APIs are compared, only some selected parts  that are  important  for  the  following chapters about porting and implementation.  

Page 27: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

15 Investigation 

5.3.1 Project files This section will compare the files a project of the JME consists of  in respect to the files an Android project consists of. First the files of the different project types will be declared and then there will be some comments of the similarities and differences of the files. 

5.3.1.1 Files in JME projects 

A JME project has some files in the project root and some directories consisting of project  files  of  specific  types. Not  all  files  declared  below  are  necessary  for  all projects. 

5.3.1.1.1 Src folder 

The src folder contains the packages with the source code of the project. 

5.3.1.1.2 Bin folder 

The bin folder contains the compiled classes of the project. 

5.3.1.1.3 Res folder 

This folder contains resources to the project, images, audio, text and others. 

5.3.1.2 Built files in JME projects 

5.3.1.2.1 Jar‐file 

The  Java  archive  file,  jar‐file,  is  a  packed  project  archive  that  is  possible  to deliver to a device, an application file that can be run on the device. 

5.3.1.2.2 Manifest.mf 

A  file  that  describes  the  content  of  the  jar‐file  and  contains  attributes  to describe the contents of the jar‐file. It is mandatory to add a manifest.mf file to the  jar archive. There are some mandatory attributes of a manifest.mf file and some optional. 

5.3.1.2.3 Jad‐file 

The Java Application Descriptor file, jad‐file, is an optional file to support the jar archive.  The  jad‐file  contains  information  about  the MIDlet  suit  and  has  the purpose  to  give  information  about  if  the  application  is  appropriate  for  the device  (16).  Even  though  the  jad‐file  is  optional  if  it  is  used  there  are  some mandatory attributes in the file and some optional. 

5.3.1.3 Files in Android projects 

An Android project consists of a couple of different files and folders. The different types are described below. 

5.3.1.3.1 R.java 

This file contains references to the files in the drawable, layout, values and raw folder.  The  references  in  R.java  can  be  accessed  in  the  application  through R.<FOLDER>.<NAME>, R.id.<ID> or R.attr.<ATTR>. 

Page 28: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

16  Investigation  

5.3.1.3.2 Src folder 

This folder contains the packages with the source code of the project. 

5.3.1.3.3 Bin folder 

This folder contains the compiled classes of the project. 

5.3.1.3.4 Res folder 

This folder contains folders with the different types of resources for the project, images, values, layout files and others. 

5.3.1.3.4.1 Drawable folder 

This  folder  contains  images  like  for  example  the  icon  of  the  application,  a background image or other images. 

5.3.1.3.4.2 Layout folder 

This folder contains xml‐files defining layouts. The layout can be loaded in to the application by using the R.java file. 

5.3.1.3.4.3 Values folder 

This  folder  contains  xml‐files  that  define  constants  global  values  in  the application. The values can be used by the application through the R.java file. 

5.3.1.3.4.4 Raw folder 

This  folder  contains  raw  files  like music  and  video  files  to  be  used  in  the application.  The  raw  files  can  be  reached  through  the  R.java  file  to  be accessed in the application. 

5.3.1.4 Built files in Android projects 

5.3.1.4.1 APK‐file 

The apk‐file is an Android package file, which contains all of the files related to a single Android application. A project is compiled into a single apk‐file. 

5.3.1.4.2 AndroidManifest.xml 

This  file defines  the user permissions of  the application,  the activities and  the intent filters of the activities. Here is  it also possible to set the icon and theme of the application. 

5.3.1.5 Differences and similarities in the Android and JME files 

The biggest difference in the type of files in the projects is the R.java file that is a part  of  an  Android  project;  this  file  is  necessary  for  an  Android  project  and  is generated automatically  from  the  resource  folder.    It  is used  to easy  refer  to a resource  in  the  folder  like  a  layout  or  an  image.  This  file  does  not  have  any equivalence in a JME project. 

The  source  files  are  used  and  arranged  in  packages  in  the  same way  and  the recourses  are  kept  in  a  resource  directory.  The  resource  directory  is  sorted  by 

Page 29: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

17 Investigation 

resource  type  in  Android, while  in  JME  it  is  possible  to  arrange  the  file  in  any structure.   

The  JME project can have a manifest‐file, but  its purpose  is not  the same as the file AndroidManifest.xml in the Android project. A JME project does though have a jad‐file  which  does  not  exist  in  an  Android  project  and  together  with  the manifest.mf file contains the features of the AndroidManifest file.  

An Android application  consists of a  single  file  to  transfer  to  the device.  In  JME there is the jad‐file which describes what is needed to be able to run the jar‐file of the  application.  The  jad  consists  for  example  of  information  about  size  and needed  APIs.  The  jad–file  is  needed  because  of  the  many  different implementations of JME. Android  is still the same for every device or rater every emulator since there are no devices yet. 

5.3.2 Application user interface structure The structure of an application differs in JME and Android. This section describes the structure of an applications user interface (UI).  

5.3.2.1 Application user interface structure of JME 

In Figure 5.4.1 the structure of application handling in JME is described. At the top is  the  device which  has  some  JME  applications  represented  by MIDlets.  Every MIDlet has some displayable objects consisting of what should be displayed on the screen. The MIDlet can when it is active send one of its displayable objects to the display object which will show  it on the screen. To change what  is displayed  the MIDlet can send another displayable to the display which will update the screen according to the new displayable. 

Following  is  a  description  of  the  different  classes  that  is  used  by  a  JME MIDP application. 

MIDlet – The main class of  the MIDP application. The MIDP class communicates with the device display object to display their displayable. MIDlet has methods for starting, stopping and pausing the application. 

Display –  is responsible of showing  the graphical user  interface on  the screen.  It handles  the  colors  for  the  background  and  foreground. Display  can  change  the 

Device

Display

Displayable

Midlet

Displayable Displayable

Midlet

Displayable

Midlet

Displayable Displayable Displayable

Figure 5.4.1 Device handling of what to display

Page 30: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

18  Investigation  

object  to  be  shown  on  the  screen,  the  object  to  be  displayed  are  of  the  class displayable. Display is the manager of the display and input on the device. 

Displayable –  is an object possible to be placed on the screen. It can have a title, ticker and command listeners. The command listeners added will be added as soft buttons  and  if  there  is not  enough  soft buttons  they will be  added  as  a menu. Subclasses to displayable are Canvas and Screen. In Figure 5.4.2 the hierarchy on displayable objects can be seen. 

Canvas  ‐  handle  low‐level  events  and  can  draw  graphics  on  the  display.  It  is possible  to  be  mixed  with  high‐level  screens.  Canvas  provides  methods  for handling  game  actions,  key  events  and  pointer  events.  A  class  has  to  subclass Canvas to be able to use it. 

GameCanvas  ‐ provides  the basis  for a game user  interface.  It  inherited  features from  Canvas  like  commands  and  input  events  and  also  provides  game‐specific capabilities.  It has  the ability  to query key status and has an off‐screen graphics buffer. 

Screen  ‐  is a high‐level user  interface class. A screen updates the content on the screen automatically and  the  content  can be  changes while  it  is  shown and will then be updated. 

5.3.2.2 Application user interface structure of Android 

Following  is  a  description  of  the  different  classes  that  builds  an  Android  UI application.  

Activity –  is the main class of an Android application.  It creates a window where the user interface can be shown either in full screen or as a floating window. The activity  sets what  is  shown on  the  screen, by  setting  its  content view  to a view object. The screen view can be changed by setting the content view to a different view object. An existing view can as well be updated by adding views to  it  if the view is a subclass of ViewGroup. Only one view can be shown at the same time by an application but a view  can be a view group  containing other views  in a  tree structure. The handling of views in Android can be seen in Figure 5.4.3. 

Figure 5.4.2 Displayable and its subclasses.

Displayable

Canvas

GameCavas

Screen

Alert Form List TextBox

Page 31: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

19 Investigation 

An activity must be declared in the AndroidManifest.xml file to be accessed. It can be declared to be a  launcher, an entry point to the application, and will then be visible as an application on the device application panel or as a home which will be the home screen or as tab a tab in a tab activity or some other type of activity. The most used is launcher. 

If  the  current  view  of  an  activity  does  not  handle  key  events,  the  activity  can handle  them. The activity  can also  create a menu,  shown by pushing  the menu button  of  the  device,  to  make  it  possible  for  the  user  to  interact  with  the application.  

View – The view  is the object handling a rectangular surface of the screen. It can handle events  and draw object on  the  screen. Views  can be  arranged  in  a  tree structure as a view group. The layout of a view can be defined in an xml file or be dynamically  created  by  the  activity.  A  view  can  handle  key  events  and  touch screen events.  In Figure 5.4.4 some of the views predefined  in Android  is shown and how they can be arranged in a tree structure. 

ViewGroup  –  is  an  implementation  of  a  view  that  combines  views  in  different layouts. Exaples of  layouts are absolute  layout,  relative  layout,  linear  layout and table layout.  

There  is an API of predefined  implementations of both views and view groups  in the Android API. Some examples of predefined views are TextView and ImageView and  some  ViewGroups  are  ListView  and  ImageSwitcher.  To  create  a  new  view ViewGroups with different layouts can be combined. 

View

ScrollIndicator

ProgressBar

MapView

AnalogClock

ViewGroup

View View

TextView

SurfaceView

ImageView

Figure 5.4.4 View hierarchy in Android

Activity

View Group

View Group

View

View Group

View View

View Group

View

View

Figure 5.4.3 Viewing of content in Android.  

Page 32: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

20  Investigation  

5.3.2.3 Application user interface structure of JME vs. Android 

The displayable  screens  implementations  in  JME  can be  compared with  the pre defined  implementations  of  views. Classes  that display pre  defined objects  and handle  key  events  related  to  them.  In  Android  the MIDlet  and  display  objects functionality  is gathered  in one object,  the activity. The activity  is both  the class for displaying views and changing the displayed object or activity. 

5.3.3 Displaying graphics To create a user  interface the application has to be able to show some graphics on the screen. To do this there are different high and low level implementations. 

5.3.3.1 Displaying graphics in JME 

In JME there are two types of classes that inherit from displayable that handle the UI. Classes inheriting from Screen are high level implementations of UI and those inheriting from Canvas are low level. 

Screen  ‐  is a high‐level user  interface class. A screen updates the content on the screen automatically and  the content can be changed while  it  is  shown and will then be updated. There are some different implementations of Screen to be used for UI. Subclasses to screen are Alert, Form, List and TextBox. 

Canvas – is a low level user interface class. It can draw graphics on the display and is possible to be mixed with high‐level screens. A class has to subclass Canvas to be able to use it. A subclass to canvas is GameCanvas. 

GameCanvas  ‐ provides  the basis  for a game user  interface.  It  inherited  features from Canvas like game‐specific capabilities. It has an off‐screen graphics buffer. 

5.3.3.2 Displaying graphics in Android 

In  Android  there  are  views  that  handle  the  user  interface.  There  are  lots  of different implementations of views available together with view groups which use a hierarchy of views to display on the screen.  

View –  is  the object handling  a  rectangular  surface of  the device  screen.  It  can handle events  and draw object on  the  screen. Views  can be  arranged  in  a  tree structure as a view group. The layout of a view can be defined in an xml file or be dynamically  created  by  the  activity.  A  view  can  handle  key  events  and  touch screen events. 

Canvas ‐ is a class for holding calls for draws. It has methods for drawing bitmaps, rectangles,  circles,  text  and  others.  By  overriding  a  views’  onDraw method  the canvas can be manipulated and the graphic user interface changed. 

5.3.3.3 Graphics in JME vs. Android 

In JME user interfaces is separated in to high level, screen, and low level, canvas, implementations.  In Android  all  user  interface  classes  inherits  view.  In Android there exists more available  implementations of UIs and high  level and  low  level implementations are not separated. 

Page 33: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

21 Investigation 

5.3.4 Key event handling To interact with the user key events are used. These events have to be handled and it must be possible to determine which key was pushed. 

5.3.4.1 Key event handling in JME 

In  JME  can all displayable objects add  soft button events  to  the application but there  are  only  two  classes  that  handle  key  events,  Canvas  and  GameCanvas. Canvas and GameCanvas handles events  for  the buttons 0‐9, * and #. There are also game actions connected to the classes for up, down,  left, right, fire and four extra  actions  called  a,  b,  c  and  d.  GameCanvas  can  also  check  the  status  of  a button. Many keys can refer to the same action. 

5.3.4.2 Key event handling in Android 

The main  class  responsible  for  key events  in an Android application  is  the  class View.  The  different  implementations  of  views  handle  the  events  differently, according  to what  the  views  purpose  is.  If  the  current  view  does  not  handle  a specific event that event will be passed back to the activity, which can handle the events  that  the  view does not handle. The  activity  can  also  add  a menu  to  the menu button of the device which will show a list of menu choices.  

There are a lot of different key event codes for Android declared in the KeyEvent (17) class. There are codes for among others 0‐9, *, # and a‐z and actions for up and down.  There are key codes to support devices with an alphabetic keyboard. 

5.3.4.3 Key event handling in JME vs. Android 

Android  supports  more  key  events  then  JME.  But,  JME  has  more  predefined actions  to handle. All  key  events used  in  JME  can  also be used  in Android;  the actions existing in JME can be implemented in Android as well. 

5.3.5 Multimedia support This multimedia support section considers the types of media files  like audio, video and images that are supported by the platforms.  

5.3.5.1 JME multimedia support 

The JME media library supports any time‐based audio and video content according to  the API  (18)  and  all  registered MIME  (19)  type media.  The  limitation  is  on  the device which might not be able to play all kinds of media (18). The Media API of JME does not support 3D graphics and animation, general media  transcoding, editing or  server‐side  streaming  transmission.  It  is  up  to  the  device  manufactures  to support these features. 

There  is  an  optional  package,  JSR  184,  in  JME  that  supports  3D  graphics.  The means for the JSR 184 package is to display animated 3D graphics in real time on embedded  devices.  There  is  an  optional  package  with  an  OpenGL  ES  API  for handling 3D graphics  in JME  (20) as well but this API  is not  included  in the JSR 248 specification. 

Page 34: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

22  Investigation  

5.3.5.2 Android multimedia support 

Android  supports  a  lot  of  different media  types.  The  types mentioned  in  the documentation are: 

Images: PNG (preferred), JPG (acceptable), GIF (discouraged) (21) ,  9.PNG 

Sound: MP3, AIFC, AIFF, AU, M4A, SND, WAVE (22), (MIDI, AMR) 

Video: MPEG4, AAC, H.264 (23) 

Android does as well support 3D graphics based on  the OpenGL  (22) and has  the possibility to handle streamed media over a data connection (24). 

5.3.5.3 Multimedia support in JME vs. Android 

It seems like JME can handle any type of media according to its libraries, however the devices might have constrains  in what  it can handle. Android have constrains in what media  is supported according  to  the API. 3D graphics can be handled  in both JME and Android. 

5.3.6 File access This section considers the question of access to files on a device and also covers data storage like databases and others. 

5.3.6.1 File access in JME 

By default JME does not support file handling or databases, but through optional packages both these features can be implemented. 

It is possible to share data and information between MIDlets. This is controlled by the  individual APIs. The Record Management System API  is an API  that specifies methods for sharing record stores between MIDlets (25). 

5.3.6.1.1 File handling 

In  JME  there  is  an  optional  package  for  file  handling,  JSR75.  The  packages consist of an interface for reading and writing to and from files as well as create files and check  if the file exists. There  is also possible to  list all rote nodes and find and create directories  (26). Security check  is as well a part of  the package. Private files  like system files or other applications private files cannot be read, which make the connection restricted to prevent unauthorized manipulation of data. The JME platform is responsible of providing a security model supporting the security of the File Connection APIs. 

5.3.6.1.2 Databases 

Through the optional package Java database connectivity (JDBC), JSR169, a set of interfaces for database handling can be used in JME to access databases (27).  The JDBC package  includes support for different drivers which can be  installed dynamically to access different data sources. It can read and write data to any tabular  formatted source. To be considered  is  that  this package  is not part of the full MSA of JSR 248 and might not be available on a device. 

Page 35: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

23 Investigation 

Information can be stored in record stores as well. Record stores can be private to  the application or made public  to all applications. When  creating a  record store  the  application  gives  it  a  name,  applications  record  stores must  have unique  names.  Record  stores  created  by  different  applications  can  have  the same name. The content of a record store will remain persistent across multiple invocations of the MIDlet creating it (28). 

5.3.6.2 File access in Android 

There are different ways of saving and accessing data in Android. Data can be set private to an application or shared with other applications. In Android it is possible to use databases  (29), networks, preferences, content providers  (13) and files  (30) to store  and  retrieve data. Both databases  and  files  created by  an  application  are private  to  the application. By using  content providers or networks, data  can be shared with other applications. For example the contact  list of the phone book  is provided for other applications to use. 

5.3.6.2.1 File handling 

Android does not use a common  file system as  in desktop operating systems. On Android all application data and files are private to the application. Android provides ways to expose application data to other applications and request data from other applications. 

Private files, belonging to the application, and public files, in the file system and on removable media, are possible for the application to read and write by using the common java file library. 

5.3.6.2.2 Databases 

For  databases  a  database  library  using  SQLite  (31)  is  used.  It  contains functionality an application can use to manage its own private databases.   

To  store  data  accessible  by  other  applications  a  content  provider  (13)  can  be used  instead of  files and databases. The  content provider has methods  to  let other applications  store and  retrieve  the  type of data  that  is handled by  that content provider. Permissions must be granted by the application to be able to receive data  from other applications and the data available to others must be announced in the AndroidManifest.xml file.  

5.3.6.3 File access in JME vs. Android 

The way of  saving and accessing data  is pretty much  the  same  in Android as  in JME. Files on the device can be private to an application and in that whey not be accessed by other applications or public for everyone to use.  

Both JME and Android can use databases for data storage. The record store in JME can be compared to the content provider in Android for storing data of a specific type. 

Page 36: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

24  Investigation  

5.3.7 Communication This  communications  section  considers  all  type  of  contact with  the  device,  other devices or applications. 

5.3.7.1 Communication in JME 

MIDP supply a variety of communication opportunities and by using some optional packages even more types of communications is possible. 

5.3.7.1.1 Sockets 

The MIDP API provides  interfaces for  implementation of socket connections  in its micro edition io package. 

5.3.7.1.2 HTTP and HTTPS connections 

The  MIDP  API  provides  interfaces  for  implementation  of  HTTP  and  HTTPS connections.  

5.3.7.1.3 SMS and MMS messages 

The JSR 205 API provides access to messaging features such as SMS and MMS in JME. It allows applications to send and receive wireless messages  independent of  the  underlying messaging  protocol  and  can  therefore  send  both  SMS  and MMS messages.  

5.3.7.1.4 Push, SMS and MMS wakeup 

Wakeups  for  a  JME  application  can  be  registered  using  PushRegistry  (32).  The application  can  be  set  to  listen  for  information  of  different  kind  like  SMS messages or a  socket  communication at a  specific port. A MIDlet  can also be launched at a predefined time by using PushRegistry. 

5.3.7.1.5 Bluetooth 

The  JSR 82  (33)  standardizes how  to  integrate a Bluetooth environment  to  the JME  application.  It  contains  functionality  for  setting  the  device  Bluetooth discoverable and to discover Bluetooth devices in the environment. 

5.3.7.2 Communication in Android 

In  Android  it  is  possible  to  use  a  lot  of  different  type  of  communication opportunities to communicate both externally, through for example Internet, and internally. 

5.3.7.2.1 Sockets 

The java classes from the nio and net packages for socket handling are possible to use for Android implementation. The Apache package for http client support (34) is available for creation of sockets. 

5.3.7.2.2 HTTP and HTTPS connections 

Android uses Apaches  class  for  creating a  connection  to HTTP  (35).  It  supports both http and https connections. 

Page 37: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

25 Investigation 

5.3.7.2.3 SMS and MMS messages 

SMS  and MMS messages  can  be  sent  using  the  Android  SmsManager  (36)  in Android. 

5.3.7.2.4 Push, SMS and MMS wakeup 

An  intent  receiver  (9)  can  be  used  to  receive  intent  broadcasts  from  other applications  in  the  system. For example when  it  is midnight, a SMS arrives or when  the  phone  rings.  The  application  does  not  need  to  be  running  for  the intent receivers to receive information. The intent receivers do not have a user interface,  but  they might  use  the  Notification Manager  to  alert  the  user  if something has happened (7). 

5.3.7.2.5 Bluetooth 

The org.bluez package  in Android provides classes to manage the functionality connected to Bluetooth on the device. 

5.3.7.3 Communication in JME vs. Android 

Android  can  handle  the  same  kinds  of  communications  as  JME.  The  biggest different is the wakeup functionality. The intent receiver can be used for executing code but not for viewing an UI or starting an application. But it can alert the user by using the notification manager. 

5.3.8 Request assets An application might need access to external assets. This can be done static at start up or dynamical when the assets are needed. 

5.3.8.1 Request assets in JME 

If there are network connections for PushRegistry that have to work for the MIDP application  to  function  these must be  static declared  in  the  JAD  file as a MIDlet push attribute. PushRegistry networks are networks that will alert the application when  there  is  incoming  data.  The  installation  of  the  MIDlet  will  fail  if  the connection  could not be verified  to be available and  the user gets notified  that there  are  conflicts.  Installation  failure  can  depend  on  syntax  error  in  the  push attributes,  failure  to  reserve  a  connection  because  the  connection  is  already reserved in the device, declaration of a protocol that is not supported for push in the device or referencing a MIDlet class not  listed  in the MIDlet attributes of the application. The push  registration  should be done dynamically  if  the application can  function  meaningfully  without  the  push.  This  is  done  by  using  the  class PushRegistry which maintains a  list of  inbound connections. The  implementation must guarantee  that a MIDlet  registered  for a push  is  started  in  response  to an incoming connection and can accept the connection (32). 

5.3.8.2 Request assets in Android 

Permissions  to  use  assets  can  be  checked  at  installation  by  using  the  user permission  in  the Androidmanifest.xml. The application will only be able  to use 

Page 38: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

26  Investigation  

the  assets  it  has  granted  permission  to.  Permissions  cannot  be  granted dynamically while running the application. 

If permission was not granted for an asset the application will not have access to the asset as well as  if  it was not successfully granted. Any attempt  to use assets that were not granted will result  in a failure and will possibly result  in a security exception. 

5.3.8.3 Request assets in JME vs. Android 

An application can request access to assets statically  in both JME and Android by declaring  them  in  the  JAD  respectively  the  AndridManifest.xml  file.  JME  can request  access  to  assets  dynamically  which  Android  cannot.  In  Android  all permissions  to use assets must be granted at  installation. The assets  requested dynamically must as well be declared in the jad‐file, but a certain type of protocol communication can be requested dynamically. 

The  application  is  always  responsible  for  handling  the  use  of  the  assets.  Like connect to internet or starting another application. 

5.3.9 Reuse of applications functionality To not be forced to  implement the same functionality  in more the one application, an  application  can  request  another  application  to handle  some  functionalities,  for example view the phone book or make a call. 

5.3.9.1 JME functionality reuse 

To handle a specific URL action an application can request the platform to handle it. By doing so the appropriate application for handling the URL will be brought to the  foreground  and  let  the  user  interact  with  the  content. While  the  running MIDlet will  be  kept  in  the  background.   Where  the  device  does  not  have  the capability  or  resources  to  run  the  applications  at  the  same  time,  the  main application have  to exit before  the  called  application  can  start. When  the main application is closed the called application will start (37).  

A  content handler, defined  in  JSR 211,  can be  requested  to handle data.  It  can invoke registered JME applications and applications that are not java applications by URL, by content type or by content handler  id. Multiple content handlers can be registered for a type, suffix and action. The  interactions between the  invoking and  invoked  applications  are managed  so  applications  can  be  active  either  in parallel  or  in  sequence,  depending  on  the  Java  runtime  environment  on  the device. 

5.3.9.2 Android functionality reuse 

To make use of other applications  functionality an  intent object  can be used  to broadcast an activity to some application that can handle it. Applications can use intent receivers to be able to receive  intents  from other applications. The  intent can  request  different  type  of  actions  like  viewing  data  or  call  someone  on  the phone. Actions can be defined by an application but there are also some examples of actions implemented in Android (12).  

Page 39: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

27 Investigation 

5.3.9.3 JME vs. Android functionality reuse 

The reuse of  functionality seems  to work  in  the same way  in  JME as  in Android. One application registers a content it can handle and another application calls for an application that can handle a certain type of data. The main difference is in the capability  to  run more  the  one  application  at  once.  Android  have  support  for running  more  the  on  application  at  time,  though  only  one  will  be  in  the foreground  and  active.  In  JME  it  is  up  to  the  device manufactures  to  support parallelism or not. 

5.3.10 Permissions and security There  is  some  permission  and  security  constrains  when  it  comes  to  what  an application can access. This section explains how JME and Android handles security and permissions. 

5.3.10.1 JME security model 

MIDP uses a security concept of trusted applications. This means the application may be permitted to use sensitive and restricted APIs if it is trusted (25).  

If  the MIDlet  is  trusted  the device can give  it access as  indicated by  the security policy. When  a MIDlet  requests  access  to  a  protected  API  or  function  it must request  the  permission  of  that  API  or  function.  Requested  permissions  can  be listed  in  the  MIDlet-Permissions  attribute.  The  permissions  listed  in  the MIDlet-Permissions attribute are critical for the application to work. It will not operate  correctly  without  them.  Permissions  that  are  not  critical  for  the application,  when  the  application  can  run  without  them  with  reduced functionality, the permission should be  listed  in the MIDlet-Permissions-Opt attribute instead of MIDlet-Permissions.  

An application can be signed as trusted in three levels, trusted 3rd party, operator and  manufacturer.  Anyone  can  sign  an  application  as  trusted  3rd  party. Applications  signed  as  operator  and manufacturer  are  signed  by  the  operator respective the manufacturer of the device. A device can request different type of permissions according to what domain  it  is part of. The operator domain  is often the top domain and the untrusted is the lowest.  

A  device  determines  if  a MIDlet  is  trusted  or  not  trusted.  For  a MIDlet  to  be trusted,  it  is signed as trusted by using the X.509 PKI  (38). This way the device can determine  if  the application  is  trusted  though signing and verification.  If  the  jar‐file integrity cannot be trusted by the device it is not a trusted MIDlet and will not get  access  to  sensitive  and  restricted  APIs  (39).  If  the  application  is  not  signed correctly it will not be installed. 

There  are  two  different  types  of  permissions  in  JME,  allowed  and  user.  The allowed  permissions  are  those  allowed  and  the  user  permissions  may  be authorized by  the user. A permission can be either an allowed permission or an user  permission,  not  both. User  permissions  can  be  of  three  types;  the  user  is asked  once  per  installation,  ones  per  invocation  of  the  application  or  ones  per 

Page 40: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

28  Investigation  

invocation of  the  function.   The  type of permission  an  application  can have  for different functions is depending of what trust domain it belongs to.  

5.3.10.2 Android security model 

Android uses standard Linux facilities, such as user and group IDs that are assigned to applications. Each Android application  installed to the mobile device  is given a unique  id when  installed.  This  gives  the  application  its  playground  and  prevent other  applications  to  use  the  applications  assets  it  and  it  from  using  other applications assets. When an application creates a file, the file will be assigned the same  id as  the application, which makes  the access  to  the  file  restricted  to  that application.  To make  the  file  readable  or writeable,  for  other  applications,  the flags MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE can be used, when the file is created. The id of the file is still the id of the application and is still owned  by  the  application  but  is  globally  read  and/or  writeable  and  other applications can see them. 

By  default  an  application  has  no  permissions  assigned  to  it.  To  be  able  to  use protected  features  of  the  device  an  application must  have  one  or more  user permissions  set.  These  permissions  are  set  in  the  AndroidMainfest.xml  file  by using the tag <user‐permission>. The permissions of the application are granted at installation  time.  Permissions  are  requested  and  granted  based  on  checks with trusted authorities and interaction with the user. Permissions can only be granted at  install time not while running the application. If an attempt to use a fetcher  is made without  permission  the  attempt will  fail. No  check with  the  user will  be made while  the application  is  running. When  failing  it  is not guaranteed  that an exception is thrown. Permission failure will be printed to the system log. 

The  Android  system  provides  a  couple  of  different  permissions  (40)  but  any application  can  also  define  its  own  permissions.  Permissions  might  not  be adoptable  at  all  time.  Some  operations  of  applications  will  not  permit  certain permissions (41). 

For  an  application  to  declare  its  own  permission  this  permission  needs  to  be described  in the applications AndroidManifest.xml file. The declaration should be at the form  

<permissionid="package_name.PREMISSION_NAME" Android:label="@string/label_name" Android:description="@string/description_name" />

The stings  label_name and description_name should  in this example be declared in the string.xml file. 

Android  relies  on  its  Linux  kernel  for  core  system  services  such  as  security, memory management, process management and network stack and driver model (23).  

Page 41: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

29 Investigation 

5.3.10.3 Security in JME vs. Android 

In  JME permissions  are  granted  in  two  levels.  First  the  application has  to  grant permissions  by  declaring  them  in  the  MIDlet-Permissions attribute.  Then, depending of what trusted domain the application belongs to, the access has to be granted once or more by the user. The type of user permission can also be set by the  user,  and what  it  can  be  set  to  also  depends  of what  trusted  domain  the application belongs to. While in Android all permissions must be set at installation, the user does not need to grant permissions while running the application.  

5.3.11 Other functionality Both  JME and Android consists of much more  functionality  than considered  in  this chapter. Here are some more functions to be considered. 

5.3.11.1 Alarm start up 

Both  in JME and  in Android an application can be scheduled to start at a specific time. In JME the PushRegisty class is used and in Android AlarmManager (42). 

5.3.11.2 Background execution In JME execution of applications in the background is up to each manufacturer to decide  if  it  should  be  possible  or  not.  But  according  to  the  specification  it  is possible.  In Android more  the one application can be  running at  the same  time. Only one will be in the foreground and active for user input. But an application can run services in the background with no user interface and no input from the user. 

5.3.11.3 Auto start application In Android the AlarmManager  (42)   can be used to set an application to start at a specific time from boot, which makes it possible to start it at the time the device starts.  In MIDP 2.0  it  is not possible  to auto start an application at boot,  though some  devices might  support  it.  Sony  Ericsson mobile  phones  are  one  type  of devices that supports auto start of application. 

5.3.11.4 DRM handling 

There  is no  information provided about  support of DRM handling  in  the API  for either JME or Android. In modern Sony Ericsson devices it is possible to play DRM protected content via the JME multimedia API. 

5.3.11.5 Access XML/SOAP web services and parse XML data 

In JME parsing of XML data and access to web services is accomplished trough JSR 172.  In Android  the SAX parser  is available  for paring XML. There  is no class  for handling SOAP Web services in Android.  

5.3.11.6 Sensor access In  JME  there  is an optional package  for accessing  the  sensors of  the device,  JSR 256 Mobile  Sensor API. But  this  JSR  is  not  part  of  the  JSR  248  specification.  In Android there is a class for accessing hardware sensors called Sensors (43). 

Page 42: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

30  Investigation  

5.3.11.7 Camera access 

The camera of the device can  in JME be accessed through the API of JSR 234.  In Android  it  is  accessed  through  the  CameraDevice  (44)  class  for  capturing  or previewing frames. 

5.4 Overview of package, class and methods comparison In  the next section a comparison between classes and packages  functionality  in  Java Micro Edition  (JME) and Android are described. The main  focus of  the comparison  is media handling, file access and user interface.  

Media handling like playing music, video and viewing images are according to the APIs no problem to port. Method names differ between the platforms but the functionality is almost  the  same  in  the  classes  for handling and playing media. Android uses one class both for handling the media and creating the player while JME has one class for handing the media and another for creation the player. 

Images  can be drawn directly  to  the  canvas  in both  JME  and Android. Android  also have some predefined views for viewing images. 

The file handling seems to be a bit harder but possible. There are support for the same type  of  connections  in  both  JME  and  Android. No  further  tests were made  for  the connections. The type of connections needed in the porting of the graphic engine will be tested when needed. 

The graphics seems like the harder part to port from JME to Android. There are many different types of graphics and lots of different things to do with them. The graphics in Android  are  structured  in  a  tree  hierarchy  where  every  node might  influence  the interface.  Connected  to  the  graphic  is  also  the  event  handling.  Different  graphics object can handle events, like key event. The connection between graphics and events are done differently in JME and Android. Android objects are responsible for their own event handling and the JME object relies on the canvas to handle the events. The stack of  object  handling  graphic  user  interface  changes  and  key  events  differ where  the object used are not the same. 

Something else that differs is the type of files that are part of the application packages. Though the main files, like source files, resource files and binary files are the same, the build  files  differ.  The  build  files  have  to  be  implemented  individual  for  the  two platforms.   

After  the  comparison  of  the  two  platforms  is  it  possible  to  make  the  following conclusion,  it  is  possible  to  port  an  application  from  JME  to  Android.  The  main difference  is  in handling  the user  interface. This conclusion  is made according  to  the investigation in the next section. 

 

Page 43: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 6  

 31 

Porting

In  the previous chapter  JME and Android APIs have been compared  to get a view of the possibility to port a JME application to Android. To be able to run a JME application on  Android  the  java micro  edition  specific  classes  and  package must  be  ported  to Android. The Android platform is being developed during the time of this thesis, and at the beginning of the porting a new version of the SDK for Android where released and with  it  also  some  new  fetchers  that  might  not  have  been  part  of  the  initial investigation and comparison.  

The documentation of Android was updated as the new release was released. The M5 version of Android was used when porting and developing. 

   

Page 44: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

32  Porting  

 

6.1 Porting from JME to Android Android have its own library for some functionality and uses J2SE API for other. To port a  JME  application  or  library  to  Android  all  JME  specific  classes must  be  ported  to classes existing in Android for the application to be able to run on an Android device.  

6.2 Porting of graphical engine from JME to Android At  a  first  look  at  the  graphical  engine  there were nine  classes  that were using  JME specific classes in their implementation. The focus of classes of the java micro edition packages  were  methods  for  playing  media,  controlling  media,  displaying  graphics, storing and retrieving files and information and connection to the internet. 

To get some idea of what to do a short introduction was made, by Tactel, to what the engine does and how the classes interact. Then the porting started. A lot of tests had to be done  in separate projects  to  figure out how  things were done  in Android. The source code of an application that uses the graphic engine in JME was provided, just to see how the engine was used.  

Not only  the  functionality of Android had  to be  tested  the  functions of  the  graphic engine had to be tested to figure out how they worked and interacted and what had to be done to port it to Android. 

Some  overview  of  porting  of  four  different  functions, media  playing,  graphics,  key handling  and  file handling,  in  the perspective of porting  the  graphic engine  follows. There is just an overview of how the porting is done to not reveal too much of how the graphic engine works since this is property of SouthEnd. 

6.2.1 Media player In  JME an  interface called Player  is used  for playing media  files. To create a player the class Manager  is used.   Manager provides access to an  implementation specific mechanism  for  constructing  Players.  The  player  can  have  five  different  states unrealized, realized, prefetched, started and closed. Figure 6.2.1 shows the different stages of a player in JME and what actions make the player change stage. 

Page 45: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

33 Porting 

Figure 6.2.1 Stages of a player in JME. 

 

In Android the class MediaPlayer is used for playing media files like audio and video. The player is created by the MediaPlayer class itself. The MediaPlayer can be in four different  stages,  these  stages  are  not  saved  and  do  not  have  names,  but will  be referred  to  as uninitialized, prepared,  started  and paused.  Figure  6.2.2  shows  the different  stages  of  a  player  in Android  and what  actions make  the  player  change between the stages. 

Figure 6.2.2 Stages of MediaPlyer in Android 

6.2.1.1 Playing sound 

Both the Player in JME and the MediaPlayer in Android have functions for starting, stopping,  pausing  and  forward  and  rewind  the  media.  It  is  also  possible  to determine how long the file is and how long it has played in both JME and Android. Porting  the  sound player  from  JME  to Android was no problem. The Player was almost just replaced by the MediaPlayer in Android. 

Prepared

PausedUninitialized

Started

Unrealised

Started

PrefetchedClosed

Realisedrealise() 

deallocate()

close() 

stop()

start()

prefetch() 

deallocate()

reset() 

stop()

start()

start() paus()

reset()

reset() 

prepare() 

prepareAsync() 

Page 46: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

34  Porting  

6.2.1.2 Viewing video 

The  video  in Android has  the  same  functionality  as  sound.  So  the  sound of  the video and starting and stopping the file was not much work. The video though has not only sound but a display. In JME the video is printed to a canvas and in Android it needs an object called surface to display the video. So the porting of the video player caused some problems.  

The graphics  in the graphic engine  is  implemented painting objects  in a hierarchy to a canvas. One object  is  responsible  for updating  the view.  In Android a video player needs a surface object to view the video. These surface objects are viewed using different Android views for example SurfaceView or VideoView. These views have to be added to the view hierarchy of the application to be visible. As default the graphic engine have only a root view with no children. But to be able to view a video an empty view  for when there are no video playing and a SurfaceView are added to the root view. 

6.2.1.3 Class porting 

To port the player of JME to Android a class extending MediaPlayer could be used. The  class  implements  the  stages  of  a  player,  mentioned  for  JME.  Androids MediaPlayer have slightly different steps for playing media so some changes had to be made to the classes using the player. In the Player of JME it is as well possible to get the stage of a player, in Android the stages does not actually have names and is not  possible  to  retrieve.  But  by  setting  a  variable  stage  every  time  the  players’ stage changes the stage could be saved and so also possible to retrieve. 

The  manager  creating  a  player  can  be  ported  with  an  implementation  of MediaPlayer  as  well.  The  managers’  main  responsibility  is  to  create  a  player suitable  for  the media  to be played;  the MediaPlayer of Android  can do  that by itself. Or rather the MediaPlayer in Android is used for playing all kinds of files. So a manager  implementation  could  be  done  using  the  MediaPlayer  for  creating players. 

6.2.2 Graphics In Android applications uses views to present information or graphics on the screen. These  views  are  defined  in  specific  classes  and  update  the  screen  by  themselves when needed. The developer can define  its own views to get the  interface needed. The view also handles the key events when focused. A view can contain other views in a tree structure and pass key events to its parent. 

6.2.2.1 Painting to canvas 

The most  basic  view  does  not  draw  anything  on  the  screen  and  does  not  do anything on key events. To modify what the view draws on the screen calls can be made to the canvas to draw lines, circles, text or others to the canvas in the views onDraw method. This method is called when the view gets visible on the screen.  

Page 47: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

35 Porting 

6.2.2.2 Updating view 

The  graphics  engine  to be ported uses different objects  to draw directly  to  the canvas and update the object to be drawn. By updating an object being drawn to the  canvas  it  is  important  that  the  change  gets  visible  on  the  screen.  But  by updating an object the views draw method will not be called to update the view on the screen. A call to invalidate must be done to attentive the view of an update. To make  the view notice  the change  the onDraw method ends by calling  invalidate. This will empty the canvas and make a call to the draw method of the view which calls  onDraw  which  should  draw  all  the  object  to  the  canvas  and  then  call invalidate  again.  Before  invalidate  calls  draw,  key  inputs will  be  handled which prevents  this  loop  from blocking  the application  from user  interaction. To make the updating of the screen function well no heavy calculations should be made in the  onDraw  method  to  make  the  updating  smooth  and  not  experienced  as freezing.  

6.2.2.3 Animation 

The graphic engine uses something called affectors to make animations of object. These affectors are updated every time the onDraw method is called to update the user interface. Some of these affectors makes some heavy calculations and makes the interface slow.  

6.2.2.4 Images 

Images in JME are represented by a class called Image which is not part of Android. In Android images are represented by a Bitmap. But the functionality on Image in JME and Bitmap  in Android are almost the same so the  implementation of  image handling  in  the  graphic  engine  could  almost  just  be  done  by  representing  the image by a Bitmap instead of Image. 

6.2.2.5 Fonts 

Fonts have their own class representation in JME, in Android it is part of Paint.  A font  class  could be  implemented  extending paint  to  add methods more directly connected to fonts to make it possible to easily get information about the font and not need to change the use of fonts in the graphic engine. 

6.2.3 Key handling Key  events  in  Android  are  handled  by  the  currently  focused  view.  A  view  can implement  its  own  functionality  for  handling  events  or  pass  in  on  to  the  parent implementation. The menu key by default opens  the menu defined by  the activity object if any, the red phone key close the activity object and the back button closes the  current  activity  and  goes  back  to  its  caller.  Menus  can  be  added  to  the application by its activities.   

In the graphic engine there is a key handling system making objects handle key event when  they  are  in  focus.  The  key  events  of  the  view  are  transferred  to  the  key handling system of the graphic engine and the key codes are mapped to the codes of the graphic engine. 

Page 48: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

36  Porting  

6.2.4 File access Files  in JME are accessed through a special file handling API. In Android the Java IO API is used for accessing public files. The porting of this part was simple  in the case of  the  graphic engine.  The engine did not  contain much  file handling  and  the  file handling that was part of the graphic engine was simple. The functions included are saving a  file and accessing data  through  the HTTP protocol. The porting of  the  file handling was a simple change of API classes. 

 

 

Page 49: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 7  

 37 

Implementation of the application

An application showing the functionality of the graphic engine  in the form of a media browser was the last product of this thesis. This application and its parts are described in  this  chapter  as well  as  the  reusable  components  implemented  to be used  in  the implementation.  In  the next chapter  the user  interface of  the media browser will be described and shown.   

Page 50: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

38  Implementation of the application  

7.1 Reusable components To make  the  implementation  faster  and  easy  to  update,  change  and  extend  some reusable  components  was  implemented  to  be  used  in  the  implementation.    The components  are  divided  into  four  different  types:  layers,  affectors,  collectors  and nodes. 

7.1.1 Layers The graphics engine uses something called layers for  implementing different screen views.  Some  different  types  of  layers  have  been  implemented  for  use  when implementing applications in Android using the graphic engine. 

7.1.1.1 Basic 

A basic  layer witch  implements support for a background  image or a background color and handling of affectors on  layers. All other  layers should extend this  layer to behave correct. 

7.1.1.2 List 

The media browser consists of a lot of listing of content so an implementation of a list and some variants of a list was a good start.  

The main  implementation  of  a  list  is  a  vertical  list  with  the  functionality  that objects can be added to the list. 

7.1.1.3 FocusList 

FocusList  is an  implementation of a  list; an object can be  focused by pushing up respective  down  to  focus  the  previous  respective  next  object  in  the  list  and pushing fire to pass a fire event on to the focused object. 

7.1.1.4 Grid 

The grid  is an extension of the FocusList and have the same functionality but the objects can be presented and navigate through a matrix with a predefined number of columns. It is also possible to navigate to the previous row not only the previous object  in  a  grid.  Pushing  up  respective  down moves  the  focus  to  the  previous respective next  row and pushing  left and  right moves  to  the previous  respective next object. 

7.1.1.5 MultiselectList 

This is a FocusList where more than one item can be selected. It is also possible to retrieve the selected items. 

7.1.2 Affectors In the graphic engine there were abstract classes for making animations on objects. Affectors for moving and scaling were implemented for use in the media browser. 

Page 51: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

39 Implementation of the application 

7.1.2.1 Move 

This affector moves a node in a layer according to some defined line and speed. An extension of the class is the affector move and remove which moves the node and removes it from the layer when it reaches the end point. 

7.1.2.2 Wave 

This  affector  is  similar  to move  and moves  a  node  in  a  sinus wave. One  large difference is that the wave affector moves the node back and forth from the start point to the end point. An extension of the wave affector is an affector for moving the node  in one direction and  then  setting  its position  to  the  start position and start moving it from the beginning.  

7.1.2.3 Scale 

The  scale  affector  works  on  image  nodes  and  scales  the  image  of  the  node according to defined values. 

7.1.3 Collectors Static collectors were implemented to retrieve images, audio and video through the Content providers in Android.  

7.1.3.1 Images 

Form  the  image collector  ids  for  jpg‐images or other  images can be  retrieved as well as  jpg‐images newer then a specified date. A bitmap representing the  image can then be loaded using the id as the identification of the image. 

7.1.3.2 Audio 

The collector for audio is a bit more advanced. Here it is possible to get the ids of tracks as for  images and  load there data from that  id. But  it  is as well possible to get all albums and artist the files have.  It  is possible to get the  ids of all files of a specific album or artist. 

7.1.3.3 Video 

The video collector can retrieve  ids for videos and then the URL for the video file form the id. The title of the video is also possible to retrieve from the id. 

7.1.4 Nodes Layers consist of graphic nodes being viewed on the screen.   A node can represent an image, text, some symbol or a combination of these. 

7.1.4.1 Selectable 

This  is  an  interface  for nodes  that  is possible  to  select. A  selected node will be viewed differently than a not selected node. 

7.1.4.2 AndroidBitmapSprite 

This node views a  image, what  is changed from the node  in the graphic engine  is that this node can retrieve its image from the Android R‐file id. 

Page 52: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

40  Implementation of the application  

7.1.4.3 Progress 

This node represents a progress bar. It shows progress in a bar as well as with text showing the current time and the end time. 

7.1.4.4 UpdatableMenu 

This  is a  text node displaying one  line of  text where  the  text and  its  font can be changed when necessary. 

7.2 Media browser The  media  browser  is  the  application  developed  during  the  thesis.  It  uses  the predefined  components  to  implement  a media  browser  for  displaying  images  and playing audio and video files.  

7.2.1 Application structure The  application  consists  of  a  structure  of menus  and  viewers  and  a  service  for playback of audio files. The structure can be seen in Figure 7.2.1. 

At  the  top  of  Figure  7.2.1  is  the  main  class  AMB,  standing  for  Android  Media Browser. This  class  initiates  the background  theme and  the application  colors and adds a soft buttons panel to the. It does as well bind a service for playing audio files in  the background of  the application and  initiate  the graphics engine. When  these thing are initiated the main menu is create and shown on the screen. 

The  main  menu  has  four  choices  the  video,  music,  picture  or  settings  menu. Selecting an item in the list takes the user to the selected menu. The structure of the music menu, picture menu and video menu can be seen  in the Figure 7.2.2, Figure 7.2.3 and Figure 7.2.4. 

 

Figure 7.2.1 The structure of AMB.  

MediaPlayerSound

MenuMain

BackgroundLayer

MenuVideo

Video

Settings

AMB

Pictures

Music

SoftButtonPanel

MenuMusic

MenuSettings

MenuPicture

Resume

Resume

Videos

Playlists

Albums

Artists

Tracks

Playlists

Latest photos

Photos

Camera

Pictures

ImageViewerNewJpg

ImageViewerJpg

ImageViwereNotJpg

CameraView

TracksViewer

SoundPlayerView

MusicGroupViewer

MusicGroupViewer

TracksViewer

TracksViewer

PlaylistViewer

NameSelecter

New playlist

Playlist1

Playlist N

VideoPlayerView

PlaylistViewerVideo

VideoViewer

ImageLayer

ImageLayer

ImageLayer

TracksViewer

TracksSelecter

Deleter

TracksUpdater

...

Page 53: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

41 Implementation of the application 

 

Figure 7.2.2 The structure of the music part of AMB 

Page 54: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

42  Implementation of the application  

 

Figure 7.2.3 Structure of the pictures part of AMB. 

Page 55: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

43 Implementation of the application 

 

Figure 7.2.4 Structure of the video part of AMB. 

7.2.2 Application functionality In  the previous section  the structure of  the application was described,  this section describes  the  classes  the  application  is built of  and how  they  are  related  to  each other.  Figure  7.2.5  shows  the  hierarchy  of  the  AMB  class,  the main  class  of  the application. It extends the class Activity through the AbstractMain class of the ported graphics engine. Every main class of an Android application  should extend Activity and  every  application  using  the  ported  graphic  engine  should  extend  the AbstractMain class to initiate all parameters of the engine.  

 

Figure 7.2.5 The main class of AMB. 

Page 56: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

44  Implementation of the application  

 

Figure 7.2.6 The layers implemented in AMB 

The  graphics  user  interface  of  the  graphic  engine  built  on  layers  and  nodes.  The implemented  layers can be seen  in Figure 7.2.6 and  the nodes  in Figure 7.2.7. The graphic engine consists of some nodes and an abstract class for layers.  

A description of all classes in AMB can be found in Appendix A. 

 

Figure 7.2.7 The nodes implemented in AMB. 

Page 57: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 8  

 45 

Result

The  thesis  resulted  in  some  reusable  components  for  implementing  graphic applications on  the Android platform using  the graphic engine and a Media Browser for the Android platform using the graphic engine.  

   

Page 58: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

46  Result  

8.1 Android Media Browser The following section describes how to use the Android Media Browser, AMB. It will be described  how  to  start  the  application  and  how  to  use  video, music  and  images  in AMB. 

8.1.1 Starting the application after shutdown When the application is started on the device the main menu, Figure 8.1.1, is shown. In this menu the user can get to the different parts of the browser. The choices are videos, music, pictures or settings. 

8.1.2 Video The video menu have options for resuming the playing video, view the list of videos on  the  device  and  show  the  playlists  of  videos.  In  this  version  of  AMB  it  is  not possible to create playlists. AMB can view a list of video files and start playing one of them in the video player. Figure 8.1.2 shows the video menu. 

8.1.2.1 Select a video to play 

To start playing a video the user views the video list in Figure 8.1.3. By selecting a video in the list this video will be started.  

8.1.2.2 The video player 

In the video player  it  is possible to pause, restart, forward and rewind the video. When  the  video  is  finished  it will  be  stopped  and  rewind  to  start.  Figure  8.1.4 shows the player. The video view shows how long the video is and how much have been played.  If  the music player  is playing when  the video player  is  started  the music will be paused. When the video view is left the video will be paused 

8.1.2.3 Resume a video 

When the video player view has been  left the playing video will be paused  if  it  is playing.  To  resume  the  video  the menu  option  resume  is  chosen  in  the  video menu, Figure 8.1.2. 

 

  

Page 59: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

47 Result 

Figure 8.1.1 The main menu of AMB. 

Page 60: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

48  Result  

 

Figure 8.1.2 The video menu. 

 

Figure 8.1.3 The list of videos on the external media. 

 

Page 61: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

49 Result 

 

Figure 8.1.4 AMB Video player view. 

 

 

 

Figure 8.1.5 The music menu 

 

Page 62: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

50  Result  

8.1.3 Music In the music menu the list of files to play can be chosen by selecting an album, artist, all tracks or a playlist. The files will then be shown and the player can be started. The music menu can be seen  in Figure 8.1.5. Figure 8.1.6, Figure 8.1.7 and Figure 8.1.8 shows one way to get to the music player. 

8.1.3.1 Resuming or pausing 

When  the player view have been  left  it  is possible  to get back  to  it by choosing resume in the music menu, Figure 8.1.5. This will start the player, Figure 8.1.8, and resume the last playing file if it is not already started. In the player it is possible to pause the playing sound. 

8.1.3.2 The player 

In  the player  it  is possible  to pause,  start,  forward and  rewind a  track.  It  is also possible to go to the next or previous track  in the player and change the volume level. To start and stop the player the center pad  is used, to forward and rewind the  left and right pad  is used and to get to the previous or next track the up and down pad  is used. To  set  the volume  level  the volume buttons on  the device  is used. 

8.1.3.3 Playlists 

To use playlist the user chooses playlist in the music menu, Figure 8.1.5. The list of existing playlists will be available and a menu selection for creation new playlists. To play a playlist the playlist is selected in the list and all its tracks will be visible. A track is chosen to start playing the playlist. 

To create a new playlist the “New playlist”  item  is chosen and the view  in Figure 8.1.10 gets visible. The name of the playlist is chosen and when pushing “OK” the tracks gets visible and it is possible to chose what tracks should be part of the list. The selected tracks are marked as in Figure 8.1.11. 

 

Page 63: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

51 Result 

 

Figure 8.1.6 Artists chosen from the music menu shows the currently available. 

 

Figure 8.1.7 An artist is chosen and all tracks from that artist is shown.  

Page 64: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

52  Result  

 

Figure 8.1.8 When a track is chosen all the songs of the list is added to the player. 

 

 

Figure 8.1.9 The playlist view.  

 

Page 65: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

53 Result 

 

Figure 8.1.10 When creating a new playlist the list should first be given a name. 

 

 

Figure 8.1.11 When the list has a name the tracks are chosen from the list of tracks. 

 

 

Page 66: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

54  Result  

8.1.4 Pictures The picture menu can be seen in Figure 8.1.12. There are four choices. The user can view the  latest photos from the  last seven days, all photos, use the camera or view all images that are not photos. The camera view is not implemented and will show a default screen in this version.  

8.1.4.1 Viewing pictures 

When  a  category  of  pictures  is  chosen  in  the  picture menu  the  images will  be shown in a grid view in three columns as in Figure 8.1.13. To show an image in full size or as  large as  the screen allows an  image  is selected and  the view  in Figure 8.1.14 gets visible. To show the next image in the list in full size the right button is pushed and to view the previous the left button is pushed. 

8.1.5 Settings No settings is implemented is this version of AMB.  

 

Figure 8.1.12 The picture menu, showing how many images there are in the category. 

 

  

Page 67: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

55 Result 

 

 

Figure 8.1.13 The view showing images in a grid, the selected image in the centre. 

 

Figure 8.1.14 The view of an image in full size or as large the screen allows. 

 

   

Page 68: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

56  Result  

 

   

Page 69: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 9  

 57 

Final comments

The API for Android is not that well documented. It is sometimes hard to figure out exactly what a method  in a class does or what  the class  is  for. But  there  is a good introduction to developing so you can relatively fast make your own first application. But when  you want  to make  something more  advanced  it  gets harder. Android  is new and I believe the documentation of the classes and the classes them self’s and their methods will be improved over time as Android gets in to the market and there actually are devices using  the Android platform. So  some  functions  that  today are available in JME might be available in Android as well in the future. 

During this project the Android SDK have been updated; due to this some work have had  to be done  twice. When updating  the  SDK  from  the M3  version  to M5  some classes and methods were changed as well as the paths and names of the variables in  the  AdroidMAnifest.xml  file.  This  update  also  made  the  emulator  for  eclipse instable which made  the work slower when eclipse had  to be restarted due  to  the application was never launched and eclipse was not possible to use any longer. The upgrade to M5 from M3 was made to get access to new fetchers connected to media handling on the Android platform. 

There are some differences and some similarities between Android and JME. I have not been developing for J2ME only J2SE earlier but as I can see the biggest difference in  developing  for  Android  from  JME  is  the  fact  that  in  Android  there  is  more predefined views for the developer to use but I believe many developers will instead of using these views develop their own to the application unique. 

Page 70: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

58  Final comments  

9.1 Limitations Due to time  limits not all functionality of the browser has been  implemented and no settings  can  be  done  and  no  playlist  created  for  videos,  though  the  application  is prepared to be extended to support this.  

The browser has not been  tested  in a  real device since  there were no device on  the market  running  the Android platform when  this  thesis was carried out. Performance and functionality have therefore not been tested in a real environment. 

9.2 Future work In continuing developing the browser perhaps some sorting of the video files could be of  interest. For audio files there  is prepared for sorting audio file according to genre, but due  to  limitations  in  the early Android SDK  this  is not  fully  implemented. When support is implemented in the future SDKs this function can easily be added. 

For making the application more fun  it could be good to be able to do some settings. Settings  like choosing  language and  theme  for background and colors are  supported but not implemented in the settings menu. Other settings that might be of interest in future versions are the option to be able to make the application stay in horizontal or portrayal position even when tilting the phone.  

The Android platform have support for touch screen so adding interaction through the screen might be of interest in the future. The graphic engine used for implementation of AMB does not support interaction through touch screen but support can be added.   

Page 71: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Chapter 10  

 59 

Acknowledgements

Thanks to Tactel for  letting me perform my master thesis at their office  in Umeå and an extra thank you to my external supervisor Mattias Ohlsson and all the staff at the office who have helped me in my work. 

   

Page 72: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

60    

Page 73: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    References  

 61 

References

The  following  pages  consist  of  references  to  the  webpage’s  that  consists  of information about Android and JME and their API’s as well as references to books and documents used in the thesis. 

   

Page 74: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

62  References  

1. Sony Ericsson. W910i. Try the phone. [Online] [Cited: 01 29, 2008.] http://www.sonyericsson.com/cws/products/mobilephones/overview/w910i. 

2. Open Handset Alliance. Open Handset Alliance. [Online] [Cited: 02 14, 2008.] http://www.openhandsetalliance.com. 

3. Mattias Ohlsson. Media Browser on Android Platform ‐ Investigation. Umeå : Tactel, 2007. 1. 

4. Sun. Java ME Technology. [Online] [Cited: 01 29, 2008.] http://java.sun.com/javame/reference/apis.jsp. 

5. Android. Android. [Online] [Cited: 01 21, 2008.] http://code.google.com/android/. 

6. JCP. JSR 248. [Online] [Cited: 02 04, 2008.] http://www.jcp.org/en/jsr/detail?id=248. 

7. Android. Anatomy. [Online] [Cited: 02 04, 2008.] http://code.google.com/android/intro/anatomy.html. 

8. —. Activity. [Online] [Cited: 01 21, 2008.] http://code.google.com/android/reference/android/app/Activity.html. 

9. —. IntentReceiver. [Online] [Cited: 01 28, 2008.] http://code.google.com/android/reference/android/content/IntentReceiver.html. 

10. —. Service. [Online] [Cited: 01 28, 2008.] http://code.google.com/android/reference/android/app/Service.html. 

11. —. Content providers. [Online] [Cited: 02 08, 2008.] http://code.google.com/android/devel/data/contentproviders.html. 

12. —. Intent. [Online] [Cited: 01 28, 2008.] http://code.google.com/android/reference/android/content/Intent.html. 

13. —. ContentProvider. [Online] [Cited: 02 08, 2008.] http://code.google.com/android/reference/android/content/ContentProvider.html. 

14. —. AndroidManifest. [Online] [Cited: 02 05, 2008.] http://code.google.com/android/devel/bblocks‐manifest.html. 

15. —. NotificationManager. [Online] [Cited: 02 05, 2008.] http://code.google.com/android/reference/android/app/NotificationManager.html. 

16. Piroumian, Vartan. Wireless J2ME Pltaform Programming. Califonia : Sun Microsystems Inc., 2002. ISBN 0‐13‐044914‐8. 

17. Android. KeyEvent. [Online] Google. [Cited: 01 31, 2008.] http://code.google.com/android/reference/android/view/KeyEvent.html. 

18. Sun. Java. Media API (jsr135) ‐ Manager. [Online] [Cited: 01 30, 2008.] http://java.sun.com/javame/reference/apis/jsr135/. 

19. Iana. Assignments. Media types. [Online] [Cited: 01 28, 2008.] http://www.iana.org/assignments/media‐types/. 

20. Sun. Java ME. JSR 239 ‐ Java Binding for the OpenGL ES API. [Online] [Cited: 02 01, 2008.] http://java.sun.com/javame/reference/apis/jsr239/. 

Page 75: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

63 References 

21. Android. Avalible resources. [Online] [Cited: 01 22, 2008.] http://code.google.com/android/reference/available‐resources.html. 

22. —. AudioFileFormat type. [Online] [Cited: 01 22, 2008.] http://code.google.com/android/reference/javax/sound/sampled/AudioFileFormat.Type.html. 

23. —. What is Android. [Online] [Cited: 01 23, 2008.] http://code.google.com/android/what‐is‐android.html. 

24. —. Media. [Online] [Cited: 02 01, 2008.] http://code.google.com/android/toolbox/apis/media.html. 

25. Sun. Java. MIDlet package summary. [Online] [Cited: 01 29, 2008.] http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/midlet/package‐summary.html. 

26. Java Community Process. JCP. JSR 75: PDA Optional Packages for the J2ME Platform. [Online] [Cited: 01 30, 2008.] http://www.jcp.org/en/jsr/detail?id=75. 

27. Sun. Java. JSR169. [Online] [Cited: 01 30, 2008.] http://java.sun.com/javame/reference/apis/jsr169/. 

28. —. Java. RecordStore. [Online] [Cited: 01 30, 2008.] http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/rms/RecordStore.html. 

29. Android. SQLiteDatabase. [Online] [Cited: 01 30, 2008.] http://code.google.com/android/reference/android/database/sqlite/SQLiteDatabase.html. 

30. —. File. [Online] [Cited: 01 30, 2008.] http://code.google.com/android/reference/java/io/File.html. 

31. —. SQLite package summary. [Online] [Cited: 02 08, 2008.] http://code.google.com/android/reference/android/database/sqlite/package‐summary.html. 

32. Sun. Java. PushRegistry. [Online] [Cited: 02 04, 2008.] http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/io/PushRegistry.html. 

33. —. Java. JSR 82 Bluetooth. [Online] [Cited: 02 04, 2008.] http://java.sun.com/javame/reference/apis/jsr082/. 

34. Android. Http client protocol. [Online] [Cited: 02 04, 2008.] http://code.google.com/android/reference/org/apache/commons/httpclient/protocol/package‐descr.html. 

35. —. HttpConnection. [Online] [Cited: 02 04, 2008.] http://code.google.com/android/reference/org/apache/commons/httpclient/HttpConnection.html. 

Page 76: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

64  References  

36. —. SMS manager. Google. [Online] [Cited: 02 04, 2008.] http://code.google.com/android/reference/android/telephony/gsm/SmsManager.html. 

37. Sun. Java. MIDlet. [Online] [Cited: 01 30, 2008.] http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/midlet/MIDlet.html. 

38. —. Java. MIDlet PKI Trust. [Online] [Cited: 01 29, 2008.] http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/midlet/doc‐files/PKITrust.html. 

39. —. Java. MIDlet Authorization. [Online] [Cited: 01 29, 2008.] http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/midlet/doc‐files/Authorization.html. 

40. Android. Manifest permission. [Online] [Cited: 01 28, 2008.] http://code.google.com/android/reference/android/Manifest.permission.html. 

41. —. Security. [Online] [Cited: 01 28, 2008.] http://code.google.com/android/devel/security.html. 

42. —. AlarmManager. Google. [Online] [Cited: 02 04, 2008.] http://code.google.com/android/reference/android/app/AlarmManager.html. 

43. —. Sensors. Google. [Online] [Cited: 02 04, 2008.] http://code.google.com/android/reference/android/hardware/Sensors.html. 

44. —. CameraDevice. [Online] [Cited: 02 04, 2008.] http://code.google.com/android/reference/android/hardware/CameraDevice.html. 

45. Berggren, Malin. Media Browser on Android. Proposal of thesis work 30 hp. Umeå : s.n., 2008. 

46. java.net. java.net. J2ME Tutorial, Part 4: Multimedia and MIDP 2.0. [Online] [Cited: 02 01, 2008.] http://today.java.net/pub/a/today/2005/09/27/j2me4.html. 

47. Android. MediaPlayer. [Online] [Cited: 01 28, 2008.] http://code.google.com/android/reference/android/media/MediaPlayer.html. 

48. —. ImageView. [Online] [Cited: 01 29, 2008.] http://code.google.com/android/reference/android/widget/ImageView.html. 

 

 

Page 77: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

    Appendix  

 65 

Appendix

   

Page 78: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

66  Appendix  

   

Page 79: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

Appendix A - Class description AMB

Page 80: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

Layers

Menu Menu  is  a basic  implementation of  a menu.  It  lists  its  items  in  a portrait  list  and keeps the focused item in the center of the screen. Menu does extend ListLayer. 

MenuMain 

MenuMain  is an  implementation of  the main menu  for AMB. Contains the menu items video, music, pictures and settings and creates menus for these sections. 

MenuVideo 

The video menu contains  the menu  items  resume, videos and playlist. Creates a viewer  for  the  video  files  and have  support  for  implementation of  a player  and playlists. 

MenuMusic 

MenuMusic  contains  menu  items  for  music  related  choices.  It  has  items  for resume,  albums,  artists,  tracks  and  playlists.  Creates  views  for  viewing  albums, artists  and  tracks  and  to  create  playlists  and  view  them.  MenuMusic communicates  with  the  MediaPlayerSound  service  to  play  sounds  and  the SoundPlayerView to view information about the playing track. 

MenuPicture 

View  the  choices  of  viewing  the  latest  photos,  all  photos,  the  camera  and  all pictures. Creates  views  for photos  and pictures  and have  support  for  viewing  a camera view.  

MenuSettings 

Not implemented, shows a default screen. 

TracksViewer 

TracksViewer  shows  tracks  according  to  some  selection  from  the  database  for music. It retrieves information of the tracks from the AudioCollector. 

MusicGroupViewer 

MusicGroupViewer shows groups of audio files like albums, artist or genres. It will shows the tracks of a group when selected using the TracksView. 

VideoViewer 

VideoViewer views a list of all video files on the external media of the device using the VideoCollector. 

PlaylistViewer 

PlayListViewer views the playlists for music and a choice of creating a new playlist. The playlist are retrieved from the PlaylistCollector. 

Page 81: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

PlaylistViewerVideo 

Not implemented, shows a default screen. 

NameSelecter NameSelecter is a layer for selecting a name. 

TracksSelecter TracksSelector is a list view for selecting tracks. 

ImageViewer ImageViewer is an abstract implementation of an image viewer viewing images in a grid with three columns. 

ImageViewerNewJpg 

ImageViewerNewJpg  is  an  image  view  viewing  all  jpg  images  newer  then  one week. It retrieves the pictures using the ImageCollector. 

ImageViewerJpg 

ImageViewerJpg  is  an  image  view  viewing  all  jpg  images  on  the  external media using the ImageCollector. 

ImageViewerNotJpg 

IamgeViewerNotJpg is an image viewer viewing all images that is not jpg images. It retrieves the images using the ImageCollector. 

ImageLayer Views an image in full size or as large the screen allows. 

BackgroundLayer BackgroundLayer shows a background  image and some animated  images according to the settings. It also shows a left panel if there are any items in the panel. 

SoftButtonsPanel SoftButtonPanel shows information of the soft buttons in the bottom of the screen if any. 

CameraView Not implemented, shows a default screen. 

SoundPlayerView SoundPlayerView views a player interface for playing, pausing, forward and rewind a track as well as going to the previous or next track and adjusting the volume level. 

VideoPlayerView VideoPlayerView  views  a  player  showing  the  video  and  has  functions  for  playing, pausing, forward and rewind a video file. 

 

Page 82: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

NotImplemented A layer for viewing a default screen for not implemented functionality. 

Nodes

ImageViewerItem ImageViewerItem  is an  item viewing an  image either  in a predefined maximum size or as large as possible for the screen. 

PlaylistNameInput PlaylistNameInput is a node for entering a name for a playlist. 

MenuListItem An interface for menu list items 

AdstarctMenuListItem 

This is an abstract implementation of a menu list item. It is handling the graphics of the item. 

MenuListItemImpl 

This is a standard implementation of a menu list item. 

MenuListItemSong 

This  is  an  implementation  of  a menu  list  item  for  tracks  starting  the player when selected. 

MenuListItemGroup 

This is an implementation of a menu list item for a music group viewing a TracksView when selected. 

MultiselectItem 

This is a menu list item which can be botch selected and chosen. 

PlayerControl PlayerContol  is a graphic  interface  for  the control of  the music player.  It views  the information of whet button  to use  for different choices viewing  the choice on  the screen when selected. 

TrackInfoBoard Views information of a track, whether it is playing or not and what number in a list of tracks it is. 

Settings Settings  are  handling  all  changeable  settings  like  language,  background  image  and animation images. 

Page 83: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

AMB The main class of the Android Media Browser initiation all parameters and starting the sound player service. 

AffectorRollText An affector for rolling text that is too long for showing the whole text. 

 

   

Page 84: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

 

   

Page 85: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

 

   

Page 86: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

 

   

Page 87: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610

 

 

 

   

Page 88: Media Browser on Android Platform - umu.se · PDF fileMedia Browser on Android Platform ... This report consists of an investigation of differences between Java Micro Edition ... 610