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 MC HÌNH V 4
LU 5
1. TÀI 7
1.1. Yêu cu 7
1.2. La chn gii pháp và ni dung thc hin 7
2. THC HI TÀI 8
2.1. Phân công công vic cho các thành viên 8
2.2. Các công c thc hin 8
3. LÀM QUEN VI BADA SDK 9
3.1. t 9
3.2. Application life-cycle-bada 9
3.3. To Bada Project 10
3.4. Các thành phn chính trong Project 11
3.5. Chy th bada 12
4. D LIU S DNG XML 13
4.1. 13
4.2. Cú pháp 13
4.3.1. Hàm bii t string sang char* 13
4.3.2. Hàm to node mi 13
4.3.3. Hàm ly 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. Tin hành mô phng: 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 to 18
6.2.4. 18
6.2.5. 18
6.3. Tin hành mô phng 19
7. PLAY AN AUDIO FILE 21
7.1. Nhim v 21
7.2. c thc hi 21
7.3. Gii thích các hàm thc hin 22
8. KT QU 28
9. NG PHÁT TRI TÀI 28
TÀI LIU THAM KHO 29
DANH MỤC HÌNH VẼ
Hình 1 Bada là gì? 5
Hình 2 Chu trình phát trin ng dng trên nn tng bada 6
Hình 3 Chu trình sng ca mt ng dng 10
Hình 4 To Project mi 11
Hình 5 Kt thúc khi to Project 11
Hình 6 Kích hot GPS 16
Hình 7 Thit lp v trí hin thi 16
Hình 8 Location update 17
Hình 9 My Position c 17
Hình 10 Ti nh và hin th 19
Hình 11 Chuyn sang ch u vùng nguy him 20
u vùng nguy him 20
m 21
i dùng vào vùng nguy him 21
LỜI NÓI ĐẦU
Hình 1 Bada là gì?
Định nghĩa Bada
B t tên theo cm t ting Triu Tiên
바다
i
hoc bin.
Samsung bada là mt nn tng hoàn chnh(h u hành?) n thoi di
ng thông minh cho phép vic to ra mt lot các ng dn thoi di
ng Samsung
Mục đích của bada
Ngày càng có nhii mun tri nghim nhng ng dng kt ni phong
phú, hin ch có nhn thoi sm áp dng công ngh, nhng khách hàng
giàu có nhc phát trin hay ch dành cho phong cách sng c th
t phát tri n thoi thông minh n
cho tt c mi, to nên mt nn dân ch tht s cho hàng t i các
châu lc trên toàn th gii.
Những đặc điểm chính của bada
- y
m ng dng các công ngh nh cao và thit
b ng ti mi khách hàng trên toàn cnh cao ca kinh
nghim và chuyên môn cn thong, k tha và
phát trin trên nhn thoi ni ti
- Ti
Samsung bada nhn là mt nn tng hoàn chn thoi thông minh
áp dng cho phn l c áp dng cho
phn ln thoi cm ng cc gn 40
trin thoi cm n mc tiêu 100 triu trong
ng là rt ln và có nhi
trin.
-
Samsung bada cung cp nhiu chch v to các ng dng SNS và
LBS, s dng giao din thoi thông minh Touch Wiz-Stylish. Các ng dng
và dch v công ngh cao có th chy bi bada. Hãy tng nhng tri nghim
ng dng thú v ng mi lúc m
Giá trị của bada
Vi s phi hp cht ch gia bada, các công ty phát trin bada và Samsung
i dùng có th s hu vô s ng dnch v ni kt gia
n thong. Samsung bada nâng cao phong cách sn
giá tr mi cho bt k ai chp nhn li mi vào cua 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 cu
Bài tp 5:
t, cu hình và chy th h u hành Bada (ca Samsung) trên thit b
ng hoc trình phng t
1. u mt vùng trên b s là nguy him.
2. i cm thit b t bn tin âm thanh phát ra
nhc nh m nói trên.
1.2. La chn gii pháp và ni dung thc hin
Do gii hn v thi gian thc hi tài, v s ng thành viên và hn ch
vn hiu bit ca các thành viên nên nhóm thng nht hoàn thành bài tp
thc hin các ch
- t, cu hình, chy th h u hành Bada trên trình phng to bada
SDK(Software Development Kit)
- Viy trên Bada thc hin các yêu cu:
o Load b s
o u v trí nguy him trên b rng ra thành nhiu v trí
nguy him.
o cng d
o nh v trí ca thit b ng bng GPS
o Kim tra v trí có trong vùng nguy him nào không
o Thông báo nu thit b y him bng cách m 1 file
media
- Báo cáo
o Nhóm
o Mi cá nhân
2. THC HI TÀI
2.1. Phân công công vic 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 hiu, lp
trình trên
badaSDK
-Hiu cu trúc
ca bada và 1
ng dng trên
bada
- xut gii
pháp
-Kim th và
báo cáo
- nh v trí
thit b bng GPS
-Kim tra thit b
có vào vùng nguy
him không
-Vit báo cáo
nhóm
2
Bùi Th Th Hà
- d liu
dùng XML
3
-Chy 1 file media
phc v báo hiu
4
ng Th Xuân
-Load b s
-ánh du vùng
nguy him xác
nh xem i
dùng có nm trong
vùng nguy him
không.
2.2. Các công c thc hin
- Phn mm phng to Bada SDK version 1.2.1 ca Samsung
- Ngôn ng lp trình C++
- Trình qu d liu XML
3. LÀM QUEN VI BADA SDK
3.1. t
- Samsung cung cp min phí trình phng to Bada SDK ti link
download:
- t, cu hình và chy th h u hành Bada trên Bada SDK
Hin ti b công c phát trin các ng dng bada ch h tr cho
h i cài WindowXP tr lên nu
mut và chy bada SDK và IDE. Yêu cu v cu hình máy:
u hành Microsoft Windows® XP, Windows® Vista hoc
Windows® 7
t 1.4 GB b nh RAM
t còn trng
n admin trên máy
c màn hình ca bada Simulator là 480 * 800. N phân
gii màn hình ca máy bi 800, thì bada Simulator s không hin
th c nhng ng dng có s dng OpenGL®.
-
Trong lu tiên khi chy bada IDE, thì mt ca s thông báo s
hin lên, yêu cu la ch ng d n workspace m nh.
ng dc ch c phép cha kí t trng(
ng d n các project), vì nó s khi
c. Nguyên nhân là do bada s dng trình g ri
ng dn tp tin d án có cha
kí t trng.
3.2. Application life-cycle-bada
Hình 3 Chu trình sống của một ứng dụng
OnAppInitializing: lu tiên khng ng dng h thng s g
thc OnAppInitializing khi tng AppRegistry s
ng thái ca ng dng và khôi phc li ng dng thec
OnAppInitializing
OnForeground:
Khôi phc x ha (3D or animation)
Khôi phc các operations mà b dng li khi ng dng ln cui chuyn sang
background
OnBackground:
Dng x ha (3D or animation)
Gii phóng tài nguyên không cn thit
Dng x
OnAppTerminating:
Kt thúc ng dng
3.3. To Bada Project
->New->Project
Hình 4 Tạo Project mới
t tên Project name :binhvu name m nh: binhvuForm>>
khi to Project
Hình 5 Kết thúc khởi tạo Project
3.4. Các thành phn chính trong Project
Khi to mi mt ng dng bada, trong workspace bao gm các folder mà ta
t cho mi ng dng s vit.
Bên trong nó bn s thy a m
- a mã c++ ca project. Nó cha các file *.h
a mã c++ ca project, nó cha file .cpp,
bao gm c mng dng entry point
n Framework. Nó s t to ra và không cn si. Folder /Home
là file h thng gc cho bt k file d liu nào hoc nhng folders
mà ng dng ca bc hoc ghi. Folder này s rn khi
mt ng dng mc t lió luôn tn
ti, thm chí nu không s dng bi ng dng.
- nhc s dng cho ng dng,
Winzard copy icon mnh ca ng dng, cái mà
bi cho tính ngh thut ca lp trình viên.
- Folder /Reng d nhng files tài nguyên mà nó
s d
bi nh thy tài nguyên nào s
c s dng khi chúng ta tao project UI.
- Chú ý: Folder /Icons, /Hc t ng
folder trong thit b tht ca bn khi b t ng dng, Trong
n thoi, /Icons và /Res là nhng v trí h thng ch c (Read-
c,ghi cho riêng ng dng ca bn.
Trong IDE, Projey mt folder /Include, nó
là mt folder o và s ánh x tt c ng dn cho project ca bn.
Nó không phi là mt folder vt lý trong h thng file windows ca
bn.
u vài files cái mà bn s nhìn thy trong h
thng file windows, v
là nh cha file Eclipse chun cái mà bn có th b qua.
3.5. Chy th bada
Làm quen vi giao din lp trình và các hàm, thao tác lp trình qua các ví
d t a ch />d%E1%BB%A5ng/
ng dn c th cp trong Help-bada IDE
4. D LIU S DNG XML
4.1.
XML (vit tt t ting Anh eXtensible Markup Language, "Ngôn ng
u M rng") là ngôn ng u vi m W3C
ngh to ra các ngôn ng t tn
ca SGML, có kh nhiu loi d liu khác nhau.
Mn hóa vic chia s d liu gia các
h thc bit là các h thc kt ni vi Internet.
Các ngôn ng da trên XML (thí d RDF, RSS, MatML, XHTML,
SVG, GML, cXML) ng, cho phép các
i và kim tra hp l bng các ngôn ng này mà không
cn có hiu bic v hình thc ca chúng.
4.2. Cú pháp
n cho mt phn 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 bt buc, vi nhim v thông báo phiên b c s
dng là phiên bn 1.0), và còn có th cha thông tin v mã hóa ký
t và các ph thuc bên ngoài.
Phn còn li ca tài liu này cha các phn t lng nhau, mt s
phn t có các thuc tính và ni dung. Mt phn t ng bao
gm hai th (tag), mt th bu và mt th kt thúc, có th
bn và các phn t khác. Th bu bao gm mt trong mt cp
ngoc nh th kt thúc bao gm chít trong
mt cp ngoc nhn, vi mt du g
File .xml s t ng bao t
vùng nguy him
4.3. Mt s hàm dùng trong XML
4.3.1. Hàm bii t string sang char*
XmlClass::convert(Osp::Base::String str,char* ch)
4.3.2. Hàm to node mi
XmlClass::CNodeLandMark(Osp::Base::String idnode,Osp::Base::String
Name,Osp::Base::String coordinates)
Khi gi hàm này mt node mi s c to ra vi các thuc tính: ID ca
node, tên node và coordinates.
4.3.3. Hàm ly ID, tên và t landmark
XmlClass::GetLandMark(Osp::Base::String idlandmark)
c gi s tr v ID, tên và t c
u. Chúng s
5. NH V DÙNG GPS
5.1. M
Kích hot sensor GPS
trí hin ti bng 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. Tin hành mô phng:
- 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 him trên b s trí ci s dng
thit 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 gi dùng touch màn hình
virtual void OnActionPerformed(const Osp::Ui::Control& source,
int actionId)(2)
// hàm t c gi khng vào 1 phím trên màn
hình
virtual void OnMapDrawCompleted(const
Osp::Locations::Controls::Map& source)(4)
// ly t trung tâm cng map
c di chuyn 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 khu dùng c
6.2.3. Các hàm t to
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 ca vùng nguy him -> in ra
OnLocationUpdated()// quét tt c các vùng landmark thông qua id ->
kim tra t ng có thu
polygonGeoArea.ContainsCoordinates(&coord)( = true nu trong else
nu ngoài)
TestLandMark()// khôi phc li vùng nguy him thông qua id ca 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.
Vi d liu vào là t ly t GPS ta s vi kim
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 hoc false. Nu là true ti s dng
thit b ng vào vùng nguy him. N
6.3. Tin hành mô phng
- 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 him.
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. Nhim v
t thit lp và vi chy file âm thanh_Play a audio
7.2. c thc hi
b1.To mt class và thit b listener ca IPlayerEventListener.
b2.To mt overlay panel : Ui::Controls::OverlayPanel
b3.Add overlay panel vào parent container:
Ui::Container::AddControl(overlayPanel)
b4.Ly b m thông tin t overlay panel:
Ui::Controls::OverlayPanel::GetBackgroundBufferInf o()
b5.Xy dng mt player s dng 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 qun lý s kin OnplayerOpened(): Player::Play()
b8.Pause plaback: Player::Pause()
b9.Resume playback: Player::Play()
b10.Stop playback: Player::Stop()
7.3. Gii thích các hàm thc hin
n hóa v theo cách em hiu. u tiên là chúng
ta ph n cn thit.
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)
{
}
Tip theo em s to ra 3 button mang tên Play,Pause,Stop. Khi chung ta click
chy mt bài hát hoc dng hoc
stop.
Chúng ta s cùng nhau to ra mt mt ng din : có 2 editfield cho
i dùng nhp firstname & lastname, khi bm vào button thì s hin th full
name = 'firstname lastname' lên mt label
1. To mt project mt tên tùy ý,
t tên project là ShowFullName
c 2 : Trong ca s Resource, right click vào Forms và Insert Resource. Mt
form mc to ra và các bn thit k i . Tùy chnh các thuc
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
cn 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 mt bi làm Id cho button Show FullName, bin này giúp
chúng ta bt s ki x lý
Mã:
static const int BUTTON_SHOW_ACTION_ID = 1;
4. Class ShowFullName ph c tha k t l
chúng ta có th bt các s kin trên các control. Tip theo, chúng ta phi khai
báo các con tr qu x lý các s
king vi các Id ca các control ta phi xây dng li hàm o(virtual)
OnActionPerformed. Do vc sa l
sn ch hàm OnActionPerformed thôi vì phn sau mình không sa 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à sa li 2 hàm OnAppInitializing và