ườ
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
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