Tải bản đầy đủ (.pdf) (29 trang)

XÂY DỰNG CHƯƠNG TRÌNH ĐÁNH DẤU VÙNG NGUY HIỂM VÀ CẢNH BÁO KHI ĐI VÀO VÙNG ĐÓ TRÊN HỆ ĐIỀU HÀNH SAMSUNGBADA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.3 MB, 29 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ-VIỄN THÔNG
*****




BÁO CÁO BÀI TẬP DÀI HỆ ĐIỀU HÀNH


Đề tài 5: XÂY DỰNG CHƯƠNG TRÌNH ĐÁNH DẤU
VÙNG NGUY HIỂM VÀ CẢNH BÁO KHI ĐI VÀO
VÙNG ĐÓ TRÊN HỆ ĐIỀU HÀNH SAMSUNG-BADA





Giáo viên hướng dẫn : TS.PHẠM VĂN TIẾN
Sinh viên thực hiện : VŨ VĂN BÌNH
BÙI THỊ THẾ HÀ
VÕ VĂN HÒA
ĐẶNG THỊ XUÂN
Lớp : KSTN-ĐTVT-K52



Hà Nội,10/2011
MỤC LỤC
DANH MC HÌNH V 4
LU 5


1.  TÀI 7
1.1. Yêu cu 7
1.2. La chn gii pháp và ni dung thc hin 7
2. THC HI TÀI 8
2.1. Phân công công vic cho các thành viên 8
2.2. Các công c thc hin 8
3. LÀM QUEN VI BADA SDK 9
3.1. t 9
3.2. Application life-cycle-bada 9
3.3. To Bada Project 10
3.4. Các thành phn chính trong Project 11
3.5. Chy th bada 12
4.  D LIU S DNG XML 13
4.1.  13
4.2. Cú pháp 13
4.3.1. Hàm bii t string sang char* 13
4.3.2. Hàm to node mi 13
4.3.3. Hàm ly ID, tên và t landmark 14
5. NH V DÙNG GPS 14
5.1. M 14
5.2. Tìm hi 14
5.3. Tin hành mô phng: 15
6. LOAD B S 17
6.1. M 17
6.2. Tìm hi 17
6.2.1.  17
6.2.2. Các hàm callback 17
6.2.3. Các hàm t to 18
6.2.4.  18
6.2.5.  18

6.3. Tin hành mô phng 19
7. PLAY AN AUDIO FILE 21
7.1. Nhim v 21
7.2. c thc hi 21
7.3. Gii thích các hàm thc hin 22
8. KT QU 28
9. NG PHÁT TRI TÀI 28
TÀI LIU THAM KHO 29



DANH MỤC HÌNH VẼ
Hình 1 Bada là gì? 5
Hình 2 Chu trình phát trin ng dng trên nn tng bada 6
Hình 3 Chu trình sng ca mt ng dng 10
Hình 4 To Project mi 11
Hình 5 Kt thúc khi to Project 11
Hình 6 Kích hot GPS 16
Hình 7 Thit lp v trí hin thi 16
Hình 8 Location update 17
Hình 9 My Position c 17
Hình 10 Ti nh và hin th 19
Hình 11 Chuyn sang ch   u vùng nguy him 20
u vùng nguy him 20
m 21
i dùng vào vùng nguy him 21


LỜI NÓI ĐẦU


Hình 1 Bada là gì?

Định nghĩa Bada
B  t tên theo cm t ting Triu Tiên
바다
    i
 hoc bin.
Samsung bada là mt nn tng hoàn chnh(h u hành?)  n thoi di
ng thông minh cho phép vic to ra mt lot các ng dn thoi di
ng Samsung
Mục đích của bada
Ngày càng có nhii mun tri nghim nhng ng dng kt ni phong
phú, hin ch có  nhn thoi sm áp dng công ngh, nhng khách hàng
giàu có  nhc phát trin hay ch dành cho phong cách sng c th 
t phát tri  n thoi thông minh n
cho tt c mi, to nên mt nn dân ch tht s cho hàng t i  các
châu lc trên toàn th gii.
Những đặc điểm chính của bada
- y
m ng dng các công ngh nh cao và thit
b ng ti mi khách hàng trên toàn cnh cao ca kinh
nghim và chuyên môn cn thong, k tha và
phát trin trên nhn thoi ni ti
- Ti
Samsung bada nhn là mt nn tng hoàn chn thoi thông minh
áp dng cho phn l c áp dng cho
phn ln thoi cm ng cc gn 40
trin thoi cm n mc tiêu 100 triu trong
 ng là rt ln và có nhi
trin.

- 
Samsung bada cung cp nhiu chch v  to các ng dng SNS và
LBS, s dng giao din thoi thông minh Touch Wiz-Stylish. Các ng dng
và dch v công ngh cao có th chy bi bada. Hãy tng nhng tri nghim
ng dng thú v ng mi lúc m
Giá trị của bada
Vi s phi hp cht ch gia bada, các công ty phát trin bada và Samsung
i dùng có th s hu vô s ng dnch v ni kt gia
n thong. Samsung bada nâng cao phong cách sn
giá tr mi cho bt k ai chp nhn li mi vào cua chúng tôi.


Hình 2 Chu trình phát triển ứng dụng trên nền tảng bada

1.  TÀI
1.1. Yêu cu
Bài tp 5:
t, cu hình và chy th h u hành Bada (ca Samsung) trên thit b
ng hoc trình phng t
1. u mt vùng trên b s là nguy him.
2. i cm thit b t bn tin âm thanh phát ra
nhc nh m nói trên.
1.2. La chn gii pháp và ni dung thc hin
Do gii hn v thi gian thc hi tài, v s ng thành viên và hn ch
vn hiu bit ca các thành viên nên nhóm thng nht hoàn thành bài tp
thc hin các ch
-  t, cu hình, chy th h u hành Bada trên trình phng to bada
SDK(Software Development Kit)
- Viy trên Bada thc hin các yêu cu:
o Load b s

o u v trí nguy him trên b  rng ra thành nhiu v trí
nguy him.
o  cng d
o nh v trí ca thit b ng bng GPS
o Kim tra v trí có trong vùng nguy him nào không
o Thông báo nu thit b    y him bng cách m 1 file
media
- Báo cáo
o Nhóm
o Mi cá nhân

2. THC HI TÀI
2.1. Phân công công vic cho các thành viên
STT
Họ và tên
Công việc
Ghi chú
Nhóm
Cá nhân
1

-Tìm hiu, lp
trình trên
badaSDK
-Hiu cu trúc
ca bada và 1
ng dng trên
bada
- xut gii
pháp

-Kim th và
báo cáo
- nh v trí
thit b bng GPS
-Kim tra thit b
có vào vùng nguy
him không
-Vit báo cáo
nhóm

2
Bùi Th Th Hà
-  d liu
dùng XML

3

-Chy 1 file media
phc v báo hiu

4
ng Th Xuân
-Load b s
-ánh du vùng
nguy him xác
nh xem i
dùng có nm trong
vùng nguy him
không.



2.2. Các công c thc hin
- Phn mm phng to Bada SDK version 1.2.1 ca Samsung
- Ngôn ng lp trình C++
- Trình qu d liu XML
3. LÀM QUEN VI BADA SDK
3.1. t
- Samsung cung cp min phí trình phng to Bada SDK ti link
download:

- t, cu hình và chy th h u hành Bada trên Bada SDK
Hin ti b công c  phát trin các ng dng bada ch h tr cho
h i cài WindowXP tr lên nu
mut và chy bada SDK và IDE. Yêu cu v cu hình máy:
  u hành Microsoft Windows® XP, Windows® Vista hoc
Windows® 7
t 1.4 GB b nh RAM
t còn trng
n admin trên máy
c màn hình ca bada Simulator là 480 * 800. N phân
gii màn hình ca máy bi 800, thì bada Simulator s không hin
th c nhng ng dng có s dng OpenGL®.
- 
Trong lu tiên khi chy bada IDE, thì mt ca s thông báo s
hin lên, yêu cu la ch ng d n workspace m nh.
ng dc ch c phép cha kí t trng(
 ng d n các project), vì nó s khi   
  c. Nguyên nhân là do bada s dng trình g ri
ng dn tp tin d án có cha
kí t trng.

3.2. Application life-cycle-bada

Hình 3 Chu trình sống của một ứng dụng
OnAppInitializing: lu tiên khng ng dng h thng s g
thc OnAppInitializing  khi tng AppRegistry s
ng thái ca ng dng và khôi phc li ng dng thec
OnAppInitializing
OnForeground:
Khôi phc x  ha (3D or animation)
Khôi phc các operations mà b dng li khi ng dng ln cui chuyn sang
background
OnBackground:
Dng x  ha (3D or animation)
Gii phóng tài nguyên không cn thit
Dng x 
OnAppTerminating:
Kt thúc ng dng

3.3. To Bada Project

->New->Project

Hình 4 Tạo Project mới
t tên Project name :binhvu  name m nh: binhvuForm>>
 khi to Project

Hình 5 Kết thúc khởi tạo Project
3.4. Các thành phn chính trong Project
Khi to mi mt ng dng bada, trong workspace bao gm các folder mà ta
t cho mi ng dng s vit.

Bên trong nó bn s thy a m
-     a mã c++ ca project. Nó cha các file *.h
a mã c++ ca project, nó cha file .cpp,
bao gm c mng dng entry point
n Framework. Nó s t to ra và không cn si. Folder /Home
là file h thng gc cho bt k file d liu nào hoc nhng folders
mà ng dng ca bc hoc ghi. Folder này s rn khi
mt ng dng mc t lió luôn tn
ti, thm chí nu không s dng bi ng dng.
-  nhc s dng cho ng dng,
 Winzard copy icon mnh ca ng dng, cái mà
bi cho tính ngh thut ca lp trình viên.
- Folder /Reng d nhng files tài nguyên mà nó
s d
bi nh thy tài nguyên nào s
c s dng khi chúng ta tao project UI.
- Chú ý: Folder /Icons, /Hc t ng
folder trong thit b tht ca bn khi b  t ng dng, Trong
n thoi, /Icons và /Res là nhng v trí h thng ch c (Read-
c,ghi cho riêng ng dng ca bn.
Trong IDE, Projey mt folder /Include, nó
là mt folder o và s ánh x tt c ng dn cho project ca bn.
Nó không phi là mt folder vt lý trong h thng file windows ca
bn.
u vài files cái mà bn s nhìn thy trong h
thng file windows, v
là nh cha file Eclipse chun cái mà bn có th b qua.
3.5. Chy th bada
Làm quen vi giao din lp trình và các hàm, thao tác lp trình qua các ví
d t a ch />d%E1%BB%A5ng/

ng dn c th  cp trong Help-bada IDE

4.  D LIU S DNG XML
4.1. 
XML (vit tt t ting Anh eXtensible Markup Language, "Ngôn ng
u M rng") là ngôn ng u vi m W3C 
ngh to ra các ngôn ng t tn
ca SGML, có kh  nhiu loi d liu khác nhau.
Mn hóa vic chia s d liu gia các
h thc bit là các h thc kt ni vi Internet.
Các ngôn ng da trên XML (thí d RDF, RSS, MatML, XHTML,
SVG, GML, cXML) ng, cho phép các
i và kim tra hp l bng các ngôn ng này mà không
cn có hiu bic v hình thc ca chúng.
4.2. Cú pháp
n cho mt phn t là
<tên thuộc_tính="giá trị">nội dung</tên>
<?xml version="1.0" encoding="UTF-8"?>
<root><landmark id="1" name="Ho boi"
coordinatesC="21.007_105.843"><tag
coordinates="21.0060,105.846"/><tag
coordinates="21.0055,105.841"/><tag
coordinates="21.0001,105.841"/><tag
coordinates="20.9998,105.847"/><tag
coordinates="21.0037,105.847"/></landmark></root>
u tiên là Khai báo XML t dòng
không bt buc, vi nhim v thông báo phiên b   c s
dng là phiên bn 1.0), và còn có th cha thông tin v mã hóa ký
t và các ph thuc bên ngoài.
Phn còn li ca tài liu này cha các phn t lng nhau, mt s

phn t   có các thuc tính và ni dung. Mt phn t ng bao
gm hai th (tag), mt th bu và mt th kt thúc, có th 
bn và các phn t khác. Th bu bao gm mt trong mt cp
ngoc nh th kt thúc bao gm chít trong
mt cp ngoc nhn, vi mt du g
File .xml s   t ng bao t
vùng nguy him
4.3. Mt s hàm dùng trong XML
4.3.1. Hàm bii t string sang char*
XmlClass::convert(Osp::Base::String str,char* ch)
4.3.2. Hàm to node mi
XmlClass::CNodeLandMark(Osp::Base::String idnode,Osp::Base::String
Name,Osp::Base::String coordinates)
Khi gi hàm này mt node mi s c to ra vi các thuc tính: ID ca
node, tên node và coordinates.
4.3.3. Hàm ly ID, tên và t landmark
XmlClass::GetLandMark(Osp::Base::String idlandmark)
c gi s tr v ID, tên và t c
u. Chúng s 
5. NH V DÙNG GPS
5.1. M
Kích hot sensor GPS
 trí hin ti bng GPS
5.2. Tìm hi
 #include <FLocations.h>
 
class GPSForm :
public Osp::Ui::Controls::Form,
public Osp::Ui::IActionEventListener,
public Osp::Locations::ILocationListener


 ILocationListener

virtual void OnLocationUpdated(Osp::Locations::Location&
location);
virtual void
OnProviderStateChanged(Osp::Locations::LocProviderState
newState);
Method: void OnLocationUpdated(Osp::Locations::Location& location);

 
using namespace Osp::Base;
using namespace Osp::Ui;
using namespace Osp::Ui::Controls;
using namespace Osp::Locations;
N QualifiedCoordinates.


  :
result
GPSForm::OnInitializing(void)
{
result r = E_SUCCESS;
AddTouchEventListener(*this);
pLocationProvider=new LocationProvider();
pLocationProvider->Construct(LOC_METHOD_GPS);
pLocationProvider->RequestLocationUpdates(*this,5,false);
return r;
}
        

Osp::Locations::LocationProvider* pLocationProvider;
: pLocationProvider->Construct(LOC_METHOD_GPS);

 RequestLocationUpdates(*this,5,false
OnLocationUpdated 
void
GPSForm::OnLocationUpdated(Osp::Locations::Location& location)
{

double latitude=0;
double logtitude=0;
const QualifiedCoordinates*
p=location.GetQualifiedCoordinates();
if(p!=null)
{
latitude=p->GetLatitude();
logtitude=p->GetLongitude();
AppLog("latitude:%f,logtitude:%f",latitude,logtitude);
}
}

. 
  latitude=p->GetLatitude           -
>GetLongitude();

5.3. Tin hành mô phng:
-  Run As>>Bada Simulator Application
- 

GPS


Hình 6 Kích hoạt GPS
-          
Location Data
- Nh

Hình 7 Thiết lập vị trí hiện thời



Hình 8 Location update


vòng tròn màu xanh

Hình 9 My Position của chương trình
6. LOAD B S
6.1. M
u vùng nguy him trên b s  trí ci s dng
thit b ng và c
6.2. Tìm hi
6.2.1. 
public Osp::Ui::ITouchEventListener,
public Osp::Ui::IActionEventListener,
public Osp::Locations::Services::IMapServiceListener,
public Osp::Locations::Controls::IMapEventListener,
public Osp::Locations::IAreaListener,

6.2.2. Các hàm callback


virtual void OnTouchPressed(const Osp::Ui::Control& source,
const Osp::Graphics::Point& currentPosition, const
Osp::Ui::TouchEventInfo & touchInfo) (1)
// c gi dùng touch màn hình

virtual void OnActionPerformed(const Osp::Ui::Control& source,
int actionId)(2)
// hàm t c gi khng vào 1 phím trên màn
hình

virtual void OnMapDrawCompleted(const
Osp::Locations::Controls::Map& source)(4)
//  ly t trung tâm cng map
c di chuyn trên b - a imap ( t
trung tâm là t nhìn trên màn hình

virtual void OnBoundaryCrossed(const GeographicArea& area,
Location& location)
// ng ra khu dùng c


6.2.3. Các hàm t to

InitializeMap() // load b s lên map control

InitializeMapService() // load b s lên imap control

OnTouchPressed()//xmlclass->WNodeLandMark(idnew,toado)- hàm này
  dl -
trung tâm ca vùng nguy him -> in ra


OnLocationUpdated()// quét tt c các vùng landmark thông qua id ->
kim tra t ng có thu
polygonGeoArea.ContainsCoordinates(&coord)( = true nu  trong else
nu  ngoài)

TestLandMark()// khôi phc li vùng nguy him thông qua id ca nó


6.2.4. 

using namespace Osp::Base;
using namespace Osp::Base::Collection;
using namespace Osp::Base::Utility;
using namespace Osp::Graphics;
using namespace Osp::Ui;
using namespace Osp::Ui::Controls;
using namespace Osp::Locales;
using namespace Osp::Locations;
using namespace Osp::Locations::Services;

6.2.5. 
Vi d liu vào là t ly t GPS ta s vi kim
tra xem t m trong hay n dl
//Tim tat ca cac diem LandMark
Osp::Base::Collection::ArrayList* pListLandM=xmlclass-
>SearchAllLandMark();
for(int i=0;i<pListLandM->GetCount();i++)
{
String coord=static_cast<String*>(pListLandM-

>GetAt(i))->GetPointer();
AppLog("%S",coord.GetPointer());
}
//
if((DrawOnMapForm::latitude!=0)&&(DrawOnMapForm::logtitude!=0))
//Khong duoc add toa do 0 0
// AddMarker(coord,1);
//Quet diem LandMark dau tien

if(pListLandM->GetCount()>0)
{
String idlandM=static_cast<String *>(pListLandM-
>GetAt(dem))->GetPointer();
TestLandMark(idlandM);
//Neu trong vung canh bao am thanh
//Neu ngoai vung quet tiep diem 2

fco=polygonGeoArea.ContainsCoordinates(&coord);
Hàm này có giá tr tr v là true hoc false. Nu là true ti s dng
thit b ng vào vùng nguy him. N

6.3. Tin hành mô phng
- n lên
hình nh

Hình 10 Tải ảnh và hiển thị

Hình 11 Chuyển sang chế độ imap để đánh dấu vùng nguy hiểm

-         


- u vùng nguy him.

Hình 12 Đánh dấu vùng nguy hiểm



Hình 13 Người dùng chưa vào vùng nguy hiểm



Hình 14 Khi người dùng vào vùng nguy hiểm
7. PLAY AN AUDIO FILE
7.1. Nhim v
t thit lp và vi chy file âm thanh_Play a audio
7.2. c thc hi
b1.To mt class và thit b listener ca IPlayerEventListener.
b2.To mt overlay panel : Ui::Controls::OverlayPanel
b3.Add overlay panel vào parent container:
Ui::Container::AddControl(overlayPanel)
b4.Ly b m thông tin t overlay panel:
Ui::Controls::OverlayPanel::GetBackgroundBufferInf o()
b5.Xy dng mt player s dng listener và b m thông tin:
Player::Construct(listener,bufferInfo)
b6.M m     ng b:
Player::OpenFile(filePath,true)
b7.Play media trong b qun lý s kin OnplayerOpened(): Player::Play()
b8.Pause plaback: Player::Pause()
b9.Resume playback: Player::Play()
b10.Stop playback: Player::Stop()


7.3. Gii thích các hàm thc hin
  n hóa v theo cách em hiu. u tiên là chúng
ta ph n cn thit.
  file .h
#include <FApp.h>
#include <FBase.h>
#include <FGraphics.h>
#include <FSystem.h>
#include <FIo.h>
#include <FMedia.h>
#include <FUi.h>

using namespace Osp::App;
using namespace Osp::Base;
using namespace Osp::System;
using namespace Osp::Graphics;
using namespace Osp::Io;
using namespace Osp::Ui;
using namespace Osp::Media;
using namespace Osp::Ui::Controls;

Khai báo các Controls (có thể thêm ở file .cpp hoặc file .h)

Player* pPlayer = null;
PlayerExampleListener* pListener = null;
OverlayPanel * pPlayerPanel = null;
Form* pPlayerForm = null;

Thêm vào Class mới chứa các điều khiển của Media , thêm vào file .h

class PlayerExampleListener:
public Osp::Media::IPlayerEventListener
{
public:
PlayerExampleListener(void);
void OnPlayerOpened(result r);
void OnPlayerEndOfClip(void);
void OnPlayerBuffering(int percent);
void OnPlayerErrorOccurred(Osp::Media::PlayerErrorReason r);
void OnPlayerInterrupted(void);
void OnPlayerReleased(void);
};

Trong file .cpp, ta xây dựng các hàm ở file .h



//Implemet IPlayerEventListener
PlayerExampleListener::PlayerExampleListener(void)
{
}

void
PlayerExampleListener::OnPlayerOpened(result r)
{

}

void
PlayerExampleListener::OnPlayerEndOfClip(void)

{

}

void
PlayerExampleListener::OnPlayerBuffering(int percent)
{
}

void
PlayerExampleListener::OnPlayerErrorOccurred(PlayerErrorReason r)
{
}

void
PlayerExampleListener::OnPlayerInterrupted(void)
{
}
void
PlayerExampleListener::OnPlayerReleased(void)
{
}

Tip theo em s to ra 3 button mang tên Play,Pause,Stop. Khi chung ta click
 chy mt bài hát hoc dng hoc
stop.
Chúng ta s cùng nhau to ra mt mt ng din : có 2 editfield cho
i dùng nhp firstname & lastname, khi bm vào button thì s hin th full
name = 'firstname lastname' lên mt label


1. To mt project mt tên tùy ý,  
t tên project là ShowFullName
c 2 : Trong ca s Resource, right click vào Forms và Insert Resource. Mt
form mc to ra và các bn thit k i . Tùy chnh các thuc
tính c       a Id c     
IDC_EDITFIELD_FIRSTNAME, IDC_EDITFIELD_LASTNAME,
IDC_BUTTON_SHOW, IDC_LABEL_FULLNAME.
2. M file ShowFullName.h, thêm vào các file header (.h) và các namespace
cn thi
Mã:
#ifndef __SHOWFULLNAME_H__
#define __SHOWFULLNAME_H__

#include <FApp.h>
#include <FBase.h>
#include <FGraphics.h>
#include <FSystem.h>
#include <Fui.h>

using namespace Osp::Ui;
using namespace Osp::Ui::Controls;
3. Khai báo mt bi làm Id cho button Show FullName, bin này giúp
chúng ta bt s ki x lý
Mã:
static const int BUTTON_SHOW_ACTION_ID = 1;
4. Class ShowFullName ph c tha k t l  
chúng ta có th bt các s kin trên các control. Tip theo, chúng ta phi khai
báo các con tr  qu x lý các s
king vi các Id ca các control ta phi xây dng li hàm o(virtual)
OnActionPerformed. Do vc sa l

sn ch hàm OnActionPerformed thôi vì phn sau mình không sa gì c):
class ShowFullName :
public Osp::App::Application,
public Osp::System::IScreenEventListener,
public IActionEventListener
{

private:
Frame *pFrame;
Form *pForm;
EditField *pEditField_FirstName;
EditField *pEditField_LastName;
Button *pButton_ShowFullName;
Label *pLabel_FullName;

public :
virtual void OnActionPerformed(const Osp::Ui::Control &source, int
actionId);
public:
// [ShowFullName] application must have a factory method that creates an
instance of itself.
static Osp::App::Application* CreateInstance(void);

public:
ShowFullName();
~ShowFullName();

public:



// Called when the application is initializing.
bool OnAppInitializing(Osp::App::AppRegistry& appRegistry);

// Called when the application is terminating.
bool OnAppTerminating(Osp::App::AppRegistry& appRegistry, bool
forcedTermination = false);

// Called when the application's frame moves to the top of the screen.
void OnForeground(void);

// Called when this application's frame is moved from top of the screen to
the background.
void OnBackground(void);

// Called when the system memory is not sufficient to run the application
any further.
void OnLowMemory(void);

// Called when the battery level changes.
void OnBatteryLevelChanged(Osp::System::BatteryLevel batteryLevel);

// Called when the screen turns on.
void OnScreenOn (void);

// Called when the screen turns off.
void OnScreenOff (void);
};

5. M file ShowFullName.cpp và sa li 2 hàm OnAppInitializing và


×