Vâng, câu hỏi của tôi rất đơn giản:
Làm cách nào để chụp ảnh bằng Windows Store App
cho Windows Phone 8.1
, sử dụng máy ảnh?
Các mẫu trên MSDN sử dụng Windows.Media.Capture.CameraCaptureUI
, không thể sử dụng được trên Windows Phone hoặc dành cho Silverlight
.
Tôi không thể tìm thấy bất kỳ tài liệu hoặc mẫu cụ thể nào cho ứng dụng Windows Phone bằng Windows Runtime.
Nếu ai đó biết, hoặc thậm chí có tài liệu cho điều này, tôi sẽ rất vui.Chụp ảnh trên Windows Store App cho Windows Phone
Trả lời
Trong WP8.1 Runtime (cũng trong Silverlight), bạn có thể sử dụng MediaCapture. Nói tóm lại:
// First you will need to initialize MediaCapture
Windows.Media.Capture.MediaCapture takePhotoManager = new Windows.Media.Capture.MediaCapture();
await takePhotoManager.InitializeAsync();
Nếu bạn cần một bản xem trước, bạn có thể sử dụng một CaptureElement:
// In XAML:
<CaptureElement x:Name="PhotoPreview"/>
Sau đó, trong đoạn code phía sau bạn có thể bắt đầu/ngừng xem trước như thế này:
// start previewing
PhotoPreview.Source = takePhotoManager;
await takePhotoManager.StartPreviewAsync();
// to stop it
await takePhotoManager.StopPreviewAsync();
Cuối cùng để chụp một bức ảnh, bạn có thể lấy ví dụ trực tiếp đến một tệp CapturePhotoToStorageFileAsync hoặc tới một dòng CapturePhotoToStreamAsync:
ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();
// a file to save a photo
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
"Photo.jpg", CreationCollisionOption.ReplaceExisting);
await takePhotoManager.CapturePhotoToStorageFileAsync(imgFormat, file);
Nếu bạn muốn quay video sau đó here is more information.
Cũng đừng quên thêm Webcam
vào Capabilities
tệp kê khai của bạn và Front/Rear Camera
trong Requirements
.
Trong trường hợp bạn cần phải chọn một máy ảnh (fornt/sau), bạn sẽ cần phải nhận được Id Camera và sau đó khởi MediaCapture
với các thiết lập mong muốn:
private static async Task<DeviceInformation> GetCameraID(Windows.Devices.Enumeration.Panel desired)
{
DeviceInformation deviceID = (await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture))
.FirstOrDefault(x => x.EnclosureLocation != null && x.EnclosureLocation.Panel == desired);
if (deviceID != null) return deviceID;
else throw new Exception(string.Format("Camera of type {0} doesn't exist.", desired));
}
async private void InitCamera_Click(object sender, RoutedEventArgs e)
{
var cameraID = await GetCameraID(Windows.Devices.Enumeration.Panel.Back);
captureManager = new MediaCapture();
await captureManager.InitializeAsync(new MediaCaptureInitializationSettings
{
StreamingCaptureMode = StreamingCaptureMode.Video,
PhotoCaptureSource = PhotoCaptureSource.Photo,
AudioDeviceId = string.Empty,
VideoDeviceId = cameraID.Id
});
}
Đó là những gì tôi đang tìm kiếm, vâng. Cảm ơn rất nhiều, bạn đã cứu tôi. – GlorfSf
@ user3627550 Tôi đã thêm lựa chọn thiết bị camera (trước/sau). – Romasz
Tôi đã thực hiện mọi thứ như bạn có nhưng khi tôi muốn chụp ảnh, bản xem trước bị lật 180 độ nhưng trông ổn khi tôi giữ điện thoại ở chế độ ngang. làm thế nào để khắc phục các ý tưởng đó? –
Bạn có thể thực hiện phương pháp trên liên kết this. Mọi thứ được giải thích rất độc đáo.
Chỉ cần sử dụng lớp PhotoCamera
và đừng quên để cho phép sử dụng camera trong ứng dụng của bạn manifest
Vâng, cảm ơn bạn, nhưng vấn đề là tôi cần phải hoàn thành một ứng dụng cửa sổ cửa hàng. Các cửa sổ 8.1 ứng dụng sử dụng thời gian chạy Windows và API này rất khác với các ứng dụng Silverlight. Và, tất nhiên, API hoàn chỉnh không được triển khai cho điện thoại windows: một số lớp rất hữu ích và đơn giản mà bạn có thể sử dụng cho Windows 8.1 sẽ không thể sử dụng được cho windows phone và tôi không thể tìm thấy các giải pháp khác. – GlorfSf
Trong phổ Windows Phone 8.1 (WinRT) ứng dụng nó không còn có thể nhảy trực tiếp vào ứng dụng camera tích hợp và nhận được một cuộc gọi lại khi một bức ảnh được chụp.
Để làm điều đó, bạn phải triển khai Windows.Media.Capture.MediaCapture
như được mô tả ở trên. Có sử dụng là CameraCatureUI
nhưng nó không có sẵn trong các ứng dụng WinRT cho Windows Phone 8.1.
Tuy nhiên, có một "cách giải quyết". Bạn có thể sử dụng Windows.Storage.Pickers.FileOpenPicker
và định cấu hình để chọn hình ảnh. Bây giờ, bộ chọn sẽ có nút máy ảnh. Người dùng có thể nhấp vào nút camera và ứng dụng máy ảnh tích hợp sẽ mở ra. Sau khi người dùng chụp ảnh, bạn sẽ nhận được cuộc gọi lại trong ứng dụng của mình. Gọi lại FileOpenPicker
hơi khó chịu khi triển khai, nhưng nó hoạt động. Nếu bạn có thể sống với ý nghĩa khả năng sử dụng thì đây có thể là một cách tiếp cận hợp lệ.
Đã có một phiên về chủ đề này trong khi xây dựng-Hội nghị trong năm 2014.You can watch the session online with this link.
đây là trường hợp chỉ với điện thoại, những gì về ứng dụng cửa hàng điện thoại? – Yawar
- 1. Ngăn hình ảnh được pixel hóa trong Windows Store App
- 2. WIndows Phone Runtime app sms
- 3. Xuất bản ứng dụng Unity trên Windows Phone Store
- 4. EventToCommand Missing For Windows Phone App
- 5. Cách thực hiện Biểu đồ trên Windows Phone Universal App
- 6. Chụp màn hình cửa hàng Windows App
- 7. Sự khác nhau giữa Windows 8 Store Apps và Windows Phone Apps
- 8. Thư viện RTMP cho Windows Phone
- 9. PLay M3U8 trên Windows Phone
- 10. Windows 8 & Windows Phone 8
- 11. Lập trình kiểm tra cập nhật Windows Store App
- 12. System.Runtime.Remoting.RemotingException trên ứng dụng Windows store
- 13. MessageBox.Show cho Windows Phone 7
- 14. Có cách nào khác thay thế cho Deep Zoom cho Windows Store App không?
- 15. Phát triển Windows Phone 7 trên Windows XP
- 16. WIndows Phone 7.1 SDK và Windows Phone 7.5 SDK
- 17. SupportedOrientations không có trong XAML của windows phone 8.1 app?
- 18. SDK Windows Phone 8 có chạy trên Windows 7 không?
- 19. Windows Phone 7 - CameraTask không hoạt động
- 20. OCR API cho Windows Phone 8
- 21. X509Certificate2 to X509Certificate trên Windows Phone 8
- 22. OCR trên Windows Phone 8 WP8
- 23. Sử dụng chứng chỉ ứng dụng khách cho Windows RT (windows 8.1/windows phone 8.1)
- 24. NetTcpBinding trên Windows Phone 7.1 (Mango)
- 25. SDK Windows Phone 7
- 26. Windows Phone 8.1 IRC
- 27. WCF + Windows Phone 7
- 28. Giải pháp cho Windows.ApplicationModel.Giới hạn gói trên Windows Phone?
- 29. API mới cho windows phone 8.1
- 30. Biên soạn SQLite cho Windows Phone 8
Bạn có muốn ứng dụng Cửa hàng Windows hoặc ứng dụng Windows Phone không? –
Ứng dụng Cửa hàng Windows. Nhưng đối với Windows Phone. (Ứng dụng Windows Phone sử dụng Windows Runtime). – GlorfSf