5

Tôi có trình phát âm thanh sử dụng BackgroundAudioPlayer cùng với AudioPlayerAgent. Tất cả mọi thứ đang làm việc tốt, ngoại trừ có một trường hợp sử dụng tôi không biết làm thế nào để xử lý.Phản ứng với tác vụ người dùng trong AudioPlayerKhi ứng dụng bị tạm ngưng

Nếu tôi phát bản âm thanh trong ứng dụng của mình và sau đó người dùng chuyển sang ứng dụng khác, bản âm thanh tiếp tục phát trong nền như mong muốn - nhưng tôi đoán ứng dụng của tôi hiện đã được đổi sang bộ nhớ và bị treo.

Câu hỏi của tôi là: nếu người dùng bắt đầu phát nhạc trong một ứng dụng khác, tôi sẽ nhận được hành động AudioPlayerAgent.UserAction.Stop làm gọi lại số AudioAgent. Nhưng tôi có thể làm bất cứ điều gì về điều này ngay từ quan điểm của ứng dụng của tôi không? Ý tôi là, tôi muốn lưu vị trí phát lại âm thanh trong đó người dùng ở trong ứng dụng của tôi, nhưng ứng dụng của tôi đã bị tạm ngưng, phải không?

Khi ứng dụng của tôi ở nền trước và âm thanh dừng lại, tôi nhận được sự kiện BackgroundAudioPlayer.Instance.PlayerState.Stopped. Ở đây tôi thường lưu vị trí phát lại. Nhưng nếu người dùng chuyển sang ứng dụng khác để phát nhạc, tôi không nhận được sự kiện này.

Vì vậy, tôi chỉ tự hỏi cách xử lý loại trường hợp này. Tôi có thể làm gì để cải thiện trải nghiệm người dùng không?

+0

cách duy nhất là để tiết kiệm mà vị trí để Isolated Storage trong các mã đại lý – onmyway133

+0

Sau khi viết câu hỏi này, tôi đã cũng nghĩ đến kho lưu trữ riêng biệt. Chỉ cần không chắc chắn nếu đó là truy cập từ mã đại lý. Dường như nó là. Sẽ thử. Cảm ơn! –

+0

@JohanPaul - Đảm bảo bạn sử dụng ['Mutex'] (http://msdn.microsoft.com/en-us/library/system.threading.mutex%28v=vs.95%29.aspx) khi truy cập bộ nhớ bị cô lập, nếu không thì ứng dụng và tác nhân nền của bạn có thể cố gắng truy cập nó cùng một lúc. –

Trả lời

1

Cách duy nhất là lưu Vị trí đó vào Isolated Storage trong mã tác nhân.

Xem very useful article of Paul này về cách sử dụng đại lý âm thanh nền và cách để giao tiếp giữa giao diện người dùng và đại lý bên

+0

Khi tôi nhận được sự kiện PlayState.Stopped do ứng dụng bên ngoài bắt đầu phát, có vẻ như thuộc tính player.Position không còn khả dụng nữa. Bất kỳ ý tưởng làm thế nào để có được vị trí của ca khúc trước khi sự kiện dừng lại xảy ra (hoặc trong thời gian nó ...)? –

Các vấn đề liên quan