Giới thiệu

Với công nghệ Xamarin, các nhà phát triển C# có thể dễ dàng xây dựng các ứng dụng trên nền tảng iOS, Android hay các ứng dụng có thể tương tác trên nhiều nền tảng di động (cross-platform) với Xamarin.Forms. Và với sự xuất hiện của Xamarin.Essentials, việc phát triển các ứng dụng di động ngày càng dễ dàng hơn với.

Xamarin.Essentials cung cấp một API đa nền giúp các nhà phát triển C# có thể làm việc với các ứng dụng trên iOS, Android hay UWP một cách dễ dàng.

Cài đặt

Để sử dụng các thư viện API từ Xamarin.Essentials, chúng ta cần cài đặt NuGet Xamarin.Essentials trong môi trường Visual Studio ( hay Visual Studio Code). Nếu bạn đang dùng Visual Studio 2019 Community, có thể vào Tools > NuGet Package Manager > Manage NuGet Packages for Solution… Trong mục BrowseXamarin.Essentials và chọn mục đầu tiên và tiến hành cài đặt:

Sau khi cài đặt thành công, chúng ta cần tham chiếu đến thư viện Xamarin.Essentials bằng dòng lệnh:


using Xamarin.Essentials;

 Ứng dụng minh họa dùng Maps API

Xamarin.Essentials cung cấp một danh sách các API và bạn có thể tham khảo các API này tại https://docs.microsoft.com/en-us/xamarin/essentials/ . Bài viết này sẽ hướng dẫn cách dùng một API rất hữu ích trong các ứng dụng di động – Maps 

Ứng dụng Xamarin.Forms được tạo trong môi trường Visual Studio 2019 Community thực thi trên nền Android. Tên của ứng dụng là XamarinEssentialsFirstApp. Nói chung, cũng không khác việc xây dựng các ứng dụng trong Visual Studio 2017 Community 

Sau khi tạo thành công, chúng ta có hai dự án:

Nếu thư viện Xamarin.Essentials cài đặt thành công, trong dự án XamarinEssentialsFirstApp.Android tìm đến tập tin MainActivity.cs sẽ xuất hiện các lệnh khai báo thư viện này trong các phương thức onCreate()OnRequestPermissionsResult():


protected override void OnCreate(Bundle savedInstanceState)

{

   ...

   Xamarin.Essentials.Platform.Init(this, savedInstanceState);

   ...

}

public override void OnRequestPermissionsResult(...)

{

  Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, 
        
                              permissions, grantResults);

   ...

}

Chọn dự án XamarinEssentialsFirstApp và mở tập tin MainPage.xaml. Xóa các nội dung mặc định trong phần tử <ContentPage> và thay bằng đoạn mã sau:


<ContentPage.Content>

   <ScrollView>

       <StackLayout Padding="10">

          <Label Text="Options:"/>

          <Label Text="Name"/>

          <Entry x:Name="EntryName"/>

          <Label Text="Latitute" Margin="0,24,0,0"/>

          <Entry Keyboard="Numeric" Text=" 12.205298" x:Name="EntryLatitude"/>

          <Label Text="Longitute"/>

          <Entry Keyboard="Numeric" Text=" 109.2147647" x:Name="EntryLongitute"/>

          <Button Text="Open Coordinates" x:Name="ButtonOpenCoords" 

                  Clicked="ButtonOpenCoords_Clicked"/>

       </StackLayout>

    </ScrollView>

</ContentPage.Content>

Nếu thực thi dự án lúc này, chúng ta sẽ có giao diện ứng dụng như sau:

Ứng dụng giúp chúng ta xác định vị trí trên bản đồ (Google Map nếu dùng Android) dựa trên vĩ độ (Latitute) và kinh độ (Longtitute). Tọa độ trên giao diện là địa chỉ 32 Trần Phú, Vĩnh Nguyên, Nha Trang, Khánh Hòa. Có thể nhận các giá trị này từ https://gps-coordinates.org/coordinate-converter.php

Nếu nhấn nút OPEN COORDINATES, kết quả

Nội dung của hàm xử lý sự kiện Click cho nút OPEN COORDINATES trong tập tin MainPage.xaml.cs:


private async void ButtonOpenCoords_Clicked(object sender, EventArgs e)

{

   if (!double.TryParse(EntryLatitude.Text, out double lat))

      return;

   if (!double.TryParse(EntryLongitute.Text, out double lng))

      return;

   await Map.OpenAsync(lat, lng, new MapLaunchOptions

   {

      Name = EntryName.Text,

      NavigationMode = NavigationMode.None

   });

}

Chú ý rằng, chúng ta cần khai báo


using Xamarin.Essentials;

phía trên tập tin này.

Hai lệnh đầu tiên dùng để kiểm tra nội dung các Entry có phải là kiểu số không và gán đến các biến lat lng. Lệnh thứ ba dùng phương thức OpenAsync của lớp Xamarin.Essentials.Map để xác định vị trí cho bản đồ dựa vào lat lng. Bản đồ có thể hiển thị theo các chế độ của thuộc tính NavigationMode:

Phương thức OpenAsync hoạt động theo nguyên tắc không đồng bộ nên sử dụng từ khóa async cho ButtonOpenCoords_Clickedawait đi kèm. (Xem lại bài https://ngocminhtran.com/2020/02/12/cac-dac-trung-huu-ich-trong-c-phan-3-lap-trinh-khong-dong-bo-asynchronous-programming/  )

Lời kết

Bài viết này giới thiệu một cách ngắn gọn về Xamrin.Essentials và cách tạo một ứng dụng Xamarin.Forms đơn giản dùng Maps API. Các bài viết sau sẽ giới thiệu các API khác và cách sử dụng chúng trong các ứng dụng Xamarin.Forms.

Tham khảo

https://docs.microsoft.com/en-us/xamarin/essentials/