Porting Windows Phone Silverlight ke UWP untuk I/O, perangkat, dan model aplikasi

Topik sebelumnya adalah Porting XAML dan UI.

Kode yang terintegrasi dengan perangkat itu sendiri dan sensornya melibatkan input dari, dan output ke, pengguna. Ini juga dapat melibatkan pemrosesan data. Tapi, kode ini umumnya tidak dianggap sebagai lapisan UI atau lapisan data. Kode ini mencakup integrasi dengan pengontrol getaran, akselerometer, giroskop, mikrofon dan speaker (yang bersinggungan dengan pengenalan ucapan dan sintesis), lokasi (geo), dan modalitas input seperti sentuhan, mouse, keyboard, dan pena.

Siklus hidup aplikasi (manajemen seumur hidup proses)

Aplikasi Silverlight Windows Phone Anda berisi kode untuk menyimpan dan memulihkan status aplikasi dan status tampilannya untuk mendukung batu nisan dan kemudian diaktifkan kembali. Siklus hidup aplikasi aplikasi Universal Windows Platform (UWP) memiliki kesejajaran yang kuat dengan aplikasi Silverlight Windows Phone, karena keduanya dirancang dengan tujuan yang sama untuk memaksimalkan sumber daya yang tersedia untuk aplikasi mana pun yang dipilih pengguna untuk dimiliki di latar depan setiap saat. Anda akan menemukan bahwa kode Anda akan beradaptasi dengan sistem baru yang masuk akal dengan mudah.

Nota Menekan tombol Kembali perangkat keras secara otomatis mengakhiri aplikasi Silverlight Windows Phone. Menekan tombol Kembali perangkat keras pada perangkat seluler tidak secara otomatis menghentikan aplikasi UWP. Sebaliknya, itu menjadi ditangguhkan, dan kemudian dapat dihentikan. Namun, detail tersebut transparan terhadap aplikasi yang merespons peristiwa siklus hidup aplikasi dengan tepat.

"Jendela debounce" adalah periode waktu antara aplikasi menjadi tidak aktif dan sistem meningkatkan acara penangguhan. Untuk aplikasi UWP, tidak ada jendela debounce; peristiwa penangguhan dinaikkan segera setelah aplikasi menjadi tidak aktif.

Untuk info selengkapnya, lihat Siklus hidup aplikasi.

Kamera

Windows Phone kode pengambilan kamera Silverlight menggunakan Microsoft.Devices.Camera, Microsoft.Devices.PhotoCamera, atau Microsoft.Telepon. Tasks.CameraCaptureTask kelas. Untuk port kode itu ke Universal Windows Platform (UWP), Anda dapat menggunakan kelas MediaCapture. Ada contoh kode dalam topik CapturePhotoToStorageFileAsync . Metode itu memungkinkan Anda untuk mengambil foto ke file penyimpanan, dan itu membutuhkan mikrofondanwebcam untuk diatur dalam manifes paket aplikasi.

Pilihan lain adalah kelas CameraCaptureUI, yang juga membutuhkan kemampuan mikrofon dan webcamdevice.

Aplikasi lens tidak didukung untuk aplikasi UWP.

Mendeteksi platform yang dijalankan aplikasi Anda

Cara berpikir tentang perubahan penargetan aplikasi dengan Windows 10. Model konseptual baru adalah bahwa aplikasi menargetkan Universal Windows Platform (UWP) dan berjalan di semua perangkat Windows. Kemudian dapat memilih untuk menyalakan fitur yang eksklusif untuk keluarga perangkat tertentu. Jika diperlukan, aplikasi ini juga memiliki opsi untuk membatasi diri untuk menargetkan satu atau beberapa keluarga perangkat secara khusus. Untuk info selengkapnya tentang keluarga perangkat apa—dan cara memutuskan keluarga perangkat mana yang akan ditargetkan—lihat Panduan untuk aplikasi UWP.

Nota Sebaiknya jangan gunakan sistem operasi atau keluarga perangkat untuk mendeteksi keberadaan fitur. Mengidentifikasi sistem operasi saat ini atau keluarga perangkat biasanya bukan cara terbaik untuk menentukan apakah sistem operasi tertentu atau fitur keluarga perangkat hadir. Alih-alih mendeteksi sistem operasi atau keluarga perangkat (dan nomor versi), uji keberadaan fitur itu sendiri (lihat Kompilasi bersyarat, dan kode adaptif). Jika Anda harus memerlukan sistem operasi atau keluarga perangkat tertentu, pastikan untuk menggunakannya sebagai versi minimum yang didukung, daripada merancang tes untuk satu versi itu.

Untuk menyesuaikan UI aplikasi Anda dengan perangkat yang berbeda, ada beberapa teknik yang kami rekomendasikan. Terus gunakan elemen berukuran otomatis dan panel tata letak dinamis seperti yang selalu Anda miliki. Dalam markup XAML Anda, terus gunakan ukuran dalam piksel yang efektif (sebelumnya melihat piksel) sehingga UI Anda beradaptasi dengan resolusi dan faktor skala yang berbeda (lihat Lihat/piksel efektif, jarak pandang, dan faktor skala.). Dan gunakan pemicu dan setter adaptif Visual State Manager untuk menyesuaikan UI Anda dengan ukuran jendela (lihat Panduan untuk aplikasi UWP.).

Namun, jika Anda memiliki skenario di mana tidak dapat dihindari untuk mendeteksi keluarga perangkat, maka Anda dapat melakukannya. Dalam contoh ini, kami menggunakan kelas AnalyticsVersionInfo untuk menavigasi ke halaman yang disesuaikan untuk keluarga perangkat seluler jika sesuai, dan kami memastikan untuk kembali ke halaman default jika tidak.

   if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
        rootFrame.Navigate(typeof(MainPageMobile), e.Arguments);
    else
        rootFrame.Navigate(typeof(MainPage), e.Arguments);

Aplikasi Anda juga dapat menentukan keluarga perangkat yang dijalankannya dari faktor pemilihan sumber daya yang berlaku. Contoh di bawah ini menunjukkan cara melakukan ini secara imperatif, dan topik ResourceContext.QualifierValues menjelaskan kasus penggunaan yang lebih umum untuk kelas dalam memuat sumber daya khusus keluarga perangkat berdasarkan faktor keluarga perangkat.

var qualifiers = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().QualifierValues;
string deviceFamilyName;
bool isDeviceFamilyNameKnown = qualifiers.TryGetValue("DeviceFamily", out deviceFamilyName);

Juga, lihat Kompilasi bersyarat, dan kode adaptif.

Status perangkat

Aplikasi Silverlight Windows Phone dapat menggunakan Microsoft.Telepon. Kelas Info.DeviceStatus untuk mendapatkan info tentang perangkat tempat aplikasi berjalan. Meskipun tidak ada setara UWP langsung untuk Microsoft.Telepon. Info namespace, berikut adalah beberapa properti dan acara yang dapat Anda gunakan di aplikasi UWP sebagai pengganti panggilan ke anggota kelas DeviceStatus.

Windows Phone Silverlight UWP
ApplicationCurrentMemoryUsage dan ApplicationCurrentMemoryUsageLimit properti Properti MemoryManager.AppMemoryUsage dan AppMemoryUsageLimit
Properti ApplicationPeakMemoryUsage Gunakan alat pembuatan profil memori di Visual Studio. Untuk info selengkapnya, lihat Mengukur penggunaan memori.
Properti DeviceFirmwareVersion Properti EasClientDeviceInformation.SystemFirmwareVersion (khusus keluarga perangkat desktop)
Properti DeviceHardwareVersion Properti EasClientDeviceInformation.SystemHardwareVersion (khusus keluarga perangkat desktop)
DeviceManufacturer property Properti EasClientDeviceInformation.SystemManufacturer (khusus keluarga perangkat desktop)
Properti DeviceName Properti EasClientDeviceInformation.SystemProductName (khusus keluarga perangkat desktop)
Properti DeviceTotalMemory Tidak ada yang setara
IsKeyboardDeployed properti Tidak ada yang setara. Properti ini menyediakan informasi tentang keyboard perangkat keras untuk perangkat seluler, yang tidak umum digunakan.
IsKeyboard Properti representatif Tidak ada yang setara. Properti ini menyediakan informasi tentang keyboard perangkat keras untuk perangkat seluler, yang tidak umum digunakan.
Acara KeyboardDeployedChanged Tidak ada yang setara. Properti ini menyediakan informasi tentang keyboard perangkat keras untuk perangkat seluler, yang tidak umum digunakan.
Properti PowerSource Tidak ada yang setara
Acara PowerSourceChanged Tangani acara RemainingChargePercentChanged (khusus keluarga perangkat seluler). Acara ini meningkat ketika nilai properti RemainingChargePercent (hanya keluarga perangkat seluler) menurun sebesar 1%.

Lokasi

Saat aplikasi yang mendeklarasikan kemampuan Lokasi dalam manifes paket aplikasinya berjalan di Windows 10, sistem akan meminta persetujuan pengguna akhir. Jadi, jika aplikasi Anda menampilkan prompt persetujuan kustomnya sendiri, atau jika menyediakan sakelar on-off, maka Anda akan ingin menghapusnya sehingga pengguna akhir hanya diminta sekali.

Orientasi

Aplikasi UWP yang setara dengan properti PhoneApplicationPage.SupportedOrientations and Orientation adalah elemen uap:InitialRotationPreference dalam manifes paket aplikasi. Pilih tab Aplikasi jika belum dipilih dan pilih satu atau beberapa kotak centang di bawah Rotasi yang didukung untuk merekam preferensi Anda.

Namun, Anda disarankan untuk merancang UI aplikasi UWP Anda agar terlihat hebat terlepas dari orientasi perangkat dan ukuran layar. Ada lebih banyak tentang itu di Porting untuk faktor bentuk dan pengalaman pengguna, yang merupakan topik setelah berikutnya.

Topik selanjutnya adalah Porting business dan data layer.