ườ

Tr

ọ ự ng ĐH Khoa H c T  Nhiên TP.HCM

TRUNG TÂM TIN H CỌ

L p trình Windows Phone Module 3 – Bài 7: Background  Agent

GV Biên so n: Tr n Duy Thanh

2014

Nội dung

• Alarm

• Reminder

• Background Transfer Service

• Generic Background Agents

• Background audio

2

Background Agent

1. Alarm

Cho phép gọi chương trình 1 lần hoặc theo định kỳ mà không lệ thuộc vào ứng dụng mà người sử dụng đang thao tác.

using Microsoft.Phone.Scheduler

Bước 1: Tạo một đối tượng Alarm

Bước 2: Thiết lập các thuộc tính cho Alarm

3

Background Agent

Bước 3: Đưa Alarm vào ScheduledActionService

1. Alarm

Alarm alarm = new Alarm("Cafe");

ạ ỉ ư ồ alarm.Content = "Ngh  tr a r i! đi cà phê nhé b n!" ;

alarm.BeginTime = DateTime.Now.AddSeconds(5);

alarm.ExpirationTime =

DateTime.Now.AddSeconds(10);

alarm.Sound = new Uri("/Assets/ringout.wav",

UriKind.Relative);

4

Background Agent

ScheduledActionService.Add(alarm);

1. Alarm

IEnumerable oldAlarms =

ScheduledActionService.GetActions();

foreach (Alarm alarm in oldAlarms)

{

ScheduledActionService.Remove(alarm.Name);

5

Background Agent

}

2. Reminder

Cho phép gọi chương trình 1 lần hoặc theo định kỳ mà không lệ thuộc vào ứng dụng mà người sử dụng đang thao tác.

using Microsoft.Phone.Scheduler

ướ ạ T o m t đ i t B c 1: ộ ố ượ Reminder ng

ướ ế ậ Thi ộ t l p các thu c tính cho B c 2: Reminder

6

Background Agent

ướ ư Đ a Alarm vào B c 3: ScheduledActionService

2. Reminder

var uniqueName = Guid.NewGuid().ToString(); Reminder reminder = new Reminder(uniqueName); reminder.BeginTime = DateTime.Now.AddSeconds(3); reminder.ExpirationTime =  DateTime.Now.AddSeconds(10); ở reminder.Title = "M  trang m i không?" ; ớ ; ể ở reminder.Content = "Ch m vào đây đ  m  trang m i" reminder.NavigationUri = new Uri("/newpage.xaml",

UriKind.Relative);

7

Background Agent

ScheduledActionService.Add(reminder);

2. Reminder

var oldReminders =

ScheduledActionService.GetActions();

foreach (Reminder r in oldReminders)

{

ScheduledActionService.Remove(r.Name);

8

Background Agent

}

3. Background Transfer Service Khi tải hay upload dữ liệu từ website xuống ta thường dùng HttpWebRequest hay WebClient, nếu như nội dung quá lớn (hình ảnh, video có dung lượng lớn chẳng hạn) thì nó sẽ chiếm rất nhiều thời gian làm cho ứng dụng bị treo, để giải quyết vấn đề này thì có có thể sử dụng Background Transfer Service

9

Background Agent

using Microsoft.Phone.BackgroundTransfer

3. Background Transfer Service BackgroundTransferRequest btr;

btr = new BackgroundTransferRequest

(remoteFileUri, localFileUri);

BackgroundTransferService.Add(btr);

btr.TransferProgressChanged += btr_TransferProgressChanged;

10

Background Agent

btr.TransferStatusChanged += btr_TransferStatusChanged;

3. Background Transfer Service private void btr_TransferProgressChanged(

object sender, BackgroundTransferEventArgs e)         {

Dispatcher.BeginInvoke(() =>

{

progressBar.Maximum = btr.TotalBytesToReceive;

progressBar.Value = btr.BytesReceived;

});

11

Background Agent

}

ả i hoàn thành

3. Background Transfer Service private void btr_TransferStatusChanged(object  sender, BackgroundTransferEventArgs e) {            //Đã t if (btr.TransferStatus == TransferStatus.Completed)              {

ả i xong

ử                 //x  lý sau khi t             }

12

Background Agent

} foreach(BackgroundTransferRequest res in   BackgroundTransferService.Requests)

{ }

4. Generic Background Agents

ü Periodic (PeriodicTask):

ü Resource-

Generic Background Agents (GBA) Cho phép chạy Background khi ứng dụng không còn trong trạng thái Foreground lifetime

13

Background Agent

intensive(ResourceIntensiveTask):

4. Generic Background Agents

14

Background Agent

4. Generic Background Agents

v Các b

ướ ạ c t o GBA

1.  T o Main App Project

2. Thêm  1  Project  Windows  Phone  Scheduled  Task

Agent vào solution,

3. T   Main  App  Project  v a  t o

ừ ạ ở ướ ừ b c  1  ta  tham

ế ớ chi u t i Agent project ở ướ  b c 2.

4. C p  nh t

ậ ậ ạ l i  Main  App  Manifest

Background Agent ể ạ ExtendedTaskentry đ  t o background agent.

:  Thêm  15

4. Generic Background Agents

ả ạ ạ

ươ ướ ể ỏ

16

Background Agent

5. Trong Main Project, g i hàm  ớ ScheduledActionService.Add đ  đăng ký Agent v i  ệ ố h  th ng. 6. G i ọ ScheduledActionService.LaunchForTest đ  ể ng trình test kh  năng ch y Agent (có  kích ho t ch th  b  qua b c này). 7.override hàm OnInvoke trong và sau cùng là g i ọ ớ NotifyComplete trong l p ScheduledAgent

5. Background audio

17

Background Agent

using Microsoft.Xna.Framework.Media; using Microsoft.Xna.Framework; Ø Có 2 cách chạy nền: ü AudioPlayerAgent, ü AudioStreamingAgent

5. Background audio

ü AudioPlayerAgent

18

Background Agent

5. Background audio

ü AudioPlayerAgent

• OnPlayStateChanged: Hàm này để tự động kiểm tra sự thay đổi trạng thái play, bao gồm: buffering, playing, track ready, track ended, và shutdown.

• OnUserAction: Hàm này sẽ được triệu gọi khi người sử dụng tiến hành những thao tác nào đó trong Application’s audio playlist ở vòng đời Foreground (dùng controls provider hoặc Universal Volume Control)

• OnError: Hàm này sẽ được triệu gọi khi có lỗi

19

Background Agent

sảy ra trong quá trình audio playback.

5. Background audio

ü AudioStreamingAgent

20

Background Agent

5. Background audio

ü AudioStreamingAgent

• OnBeginStreaming: Hàm này sẽ được triệu

• OnCancel: Hàm này sẽ được triệu gọi khi

gọi khi ta bắt đầu Audio Streaming

21

Background Agent

Audio Stream bị hủy.

Thảo luận

22

Background Agent