Archive for the 'IOBluetoothDevice' Category

2014/12/11 Bluetoothに接続中のデバイス名を取得するv3

Bluetoothに接続中のデバイス名を取得するAppleScriptの修正版です。

v2が「ペアリングされたデバイス名の一覧を取得する」という動作を行っていましたが、実際に接続中かどうかを確認して名称のリストを返すように修正しました。

ただ、

bt10.png

のように、PlayStation 3のコントローラーもつながっている状態なんですが、これだけ名前が返ってきません。

キーボードやマウスほどきちんとサポートされていない雰囲気なので、まーそんなもんなのかな、と思わないではないですが、まだいまひとつな感じがします。

AppleScript名:Bluetoothに接続中のデバイス名を取得するv3
– Created 2014-12-09 by Takaaki Naganoya
– 2014 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “IOBluetooth”

set aList to currentBluetoothDeviceNames(“displayName”) –Bluetoothメニューに出てくる名称
–> {”Piyomaru Mouse”, “Takaaki Naganoya のキーボード”, “AirTurn105v128-E36E”}

set bList to currentBluetoothDeviceNames(“realName”) –ほんまもんの名称
–> {”System Administrator’s Mouse”, “Takaaki Naganoya のキーボード”, “AirTurn105v128-E36E”}

—Bluetoothで接続中のデバイス名をリストで返す
on currentBluetoothDeviceNames(aParam)
  
  
–Bluetoothでペアリングされたデバイス一覧を取得
  
set bList to current application’s IOBluetoothDevice’s pairedDevices() –ペアリングしたデバイスを取得
  
set cList to bList as list
  
  
–デバイス名称を実際に取得  
  
set dNameList to {}
  
  
repeat with i in cList
    set j to contents of i
    
set aName to |name| of j
    
    
set aConnect to j’s isConnected() –接続中かどうかを確認
    
if aConnect = true then
      
      
if aParam = “displayName” then
        set dName to “”
        
try
          set dName to |displayName| of j
        end try
        
        
if dName is not equal to “” then
          copy dName to aName
        end if
      end if
      
      
set the end of dNameList to aName as string
      
    end if
    
  end repeat
  
  
return dNameList
  
end currentBluetoothDeviceNames

★Click Here to Open This Script 

2014/12/09 Bluetoothに接続中のデバイス名を取得するv2

Bluetoothに接続中のデバイス名を取得するAppleScriptの修正版です。

最初のバージョンでは、「recentDevices:」でBluetoothデバイスの接続ヒストリーから過去の履歴を取得して、接続ないしは接近したことのあるものだけを取り出していました。

本バージョンでは、「pairedDevices()」でMac本体とペアリングしたBluetoothデバイス名を取得します。本プログラムの名称を正しく表現すると「Bluetoothにペアリングしたデバイス名一覧を取得」ということになるでしょう。

また、実際にBluetoothデバイスが名乗っている名前(realName)と、名称変更して付けられた名前(Bluetoothデバイス一覧に出てくる名前、displayName)のどちらを取得するかを指定できるようにしました。

まだ、いろいろ試行錯誤中です。

bt1.png

bt2.png

AppleScript名:Bluetoothに接続中のデバイス名を取得するv2
– Created 2014-12-09 by Takaaki Naganoya
– 2014 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “IOBluetooth”

set aList to currentBluetoothDeviceNames(“displayName”) –Bluetoothメニューに出てくる名称
–> {”Piyomaru Mouse”, “Piyomaru iPad mini”, “Takaaki Naganoya のキーボード”, “Piyomaru iPhone”, “AirTurn105v128-E36E”, “Beats Wireless”}

set bList to currentBluetoothDeviceNames(“realName”) –ほんまもんの名称
–> {”System Administrator’s Mouse”, “Piyomaru iPad mini”, “Takaaki Naganoya のキーボード”, “Piyomaru iPhone”, “AirTurn105v128-E36E”, “Beats Wireless”}

—Bluetoothで接続中のデバイス名をリストで返す
on currentBluetoothDeviceNames(aParam)
  
  
–Bluetoothでペアリングされたデバイス一覧を取得
  
set bList to current application’s IOBluetoothDevice’s pairedDevices() –ペアリングしたデバイスを取得
  
set cList to bList as list
  
  
–デバイス名称を実際に取得  
  
set dNameList to {}
  
  
repeat with i in cList
    set j to contents of i
    
    
set aName to |name| of j
    
    
if aParam = “displayName” then
      set dName to “”
      
try
        set dName to |displayName| of j
      end try
      
      
if dName is not equal to “” then
        copy dName to aName
      end if
    end if
    
    
set the end of dNameList to aName as string
    
  end repeat
  
  
return dNameList
  
end currentBluetoothDeviceNames

★Click Here to Open This Script 

2014/11/06 Bluetoothに接続中のデバイス名を取得する

現在接続中のBluetoothデバイス名の一覧をリストで取得するAppleScriptです。

AppleScript名:asoc_Bluetoothに接続中のデバイス名を取得する
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "IOBluetooth"

set aList to currentBluetoothDeviceNames()
–> {"maro のマウス"}

—Bluetoothで接続中のデバイス名をリストで返す
on currentBluetoothDeviceNames()
  
  
–Bluetoothに最近接続されたデバイス履歴をaMax個まで取得する
  
set aMax to 255
  
set bList to (current application’s IOBluetoothDevice’s recentDevices:aMax)
  
set cList to bList as list
  
  
–デバイス名を実際に取得  
  
set dNameList to {}
  
  
try
    repeat with i in cList
      set j to contents of i
      
      
set aName to |Name| of j
      
set aConnection to (ConnectionHandle of j) as integer
      
      
–ConnectionHandleがffffだと非接続状態
      
if aConnection is not equal to 65535 then
        set the end of dNameList to aName as string
      end if
      
    end repeat
  end try
  
  
return dNameList
  
end currentBluetoothDeviceNames

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に