2017-05-03 14 views
0

Xamarin Forms/C#でBluetoothを有効にするようにユーザーに促す回避策はありますか?Xamarinフォームでブルートゥースを有効にするようにプロンプ​​トを表示する

「はい」または「いいえ」と表示されたアラートのように、Bluetoothが有効になっていない場合にスイッチをオンにするように促すメッセージが表示されます。

ユーザが「はい」を選択すると、Bluetoothが有効になります。

AndroidとiOSの両方でこれを達成するのを手伝ってください!前もって感謝します。あなたはプライベートAPIの(AppleがApp Storeで許可されていません)、最もあなたが行うことができますが、このコードのBluetooth設定にユーザーをリダイレクトしている(注を使用せずに、Bluetoothをプログラムで変更することはできませんiOSでは

答えて

2

ことそれだけで)実際のデバイス上で動作します:アンドロイドで

// Is bluetooth enabled? 
var bluetoothManager = new CoreBluetooth.CBCentralManager(); 
if (bluetoothManager.State == CBCentralManagerState.PoweredOff) { 
    // Does not go directly to bluetooth on every OS version though, but opens the Settings on most 
    UIApplication.SharedApplication.OpenUrl(new NSUrl("App-Prefs:root=Bluetooth")); 
} 

を:

Android.Bluetooth.BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter; 
// is bluetooth enabled? 
bluetoothAdapter.IsEnabled; 

bluetoothAdapter.Disable(); 
// or 
bluetoothAdapter.Enable(); 

BLUETOOTHBLUETOOTH_ADMIN許可が目のために必要とされます働く方法です。

+0

しかし、iOSでBluetoothがオンになっていないかどうか確認することはできますか? – jones

+0

私は答えを更新しました。すべての状況において、iOSの「State」プロパティが常に100%正しい場合は、私の頭の上にあまり確かではないので、これを完全にテストすることをお勧めします。 –

+0

ありがとう兄貴 !私はこれを試して、まもなくあなたに戻します。 – jones

1
in xamarin forms 

    if(await DisplayAlert(null,"Enable Bluetooth","Yes", "No")) 
    { 
     // Enablebluetooth here via custom service 
    } 


For bluetooth implementation download this in nugget 
https://github.com/tbrushwyler/Xamarin.BluetoothLE/ or you can implement your own 


//IN PCL 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Test.App 
{ 
    public interface IBluetoothService 
    { 
     void OpenBluetooth(); 

    } 
} 




In Android 
using System; 
using BluetoothLE.Core; 
using Android.Bluetooth; 
using Java.Util; 
using System.Collections.Generic; 
using BluetoothLE.Core.Events; 

namespace Test.App.Droid.Services 
{ 
    public class BluetoothService : IBluetoothService 
    { 

     public void OpenBluetooth() 
     { 
     //native code here to open bluetooth 
     } 

    } 

} 

// register it on mainactivity 



// do the same in ios 
+0

iosとandroidのカスタムサービスが必要です。 – jones

+0

私の編集した返信を見る –

+0

' プライベートCBCentralManager mgr; if(mgr.State == CBCentralManagerState.PoweredOff) { //ここに何を追加する必要がありますか? } ' – jones