1

ofono 1.17のドキュメントによると:

https://github.com/rilmodem/ofono/tree/master/doc

ハンズフリーには 2 つのインターフェイスがあります。

  • org.ofono.Handsfree
  • org.ofono.HandsfreeAudioManager

pulseaudio を機能させるには、それらにアクセスする必要があります。次のエラーが返されます。

E: [pulseaudio] backend-ofono.c: ofono でのハンズフリー オーディオ エージェントとしての登録に失敗しました: org.freedesktop.DBus.Error.UnknownMethod: インターフェイス "org.ofono.HandsfreeAudioManager" の署名 "oay" を持つメソッド "Register"存在しません

しかし、そのメソッドは存在し (上記のドキュメントによると)、その署名があります: object path, array{byte}.

したがって、存在しないというより、アクセスできないと思います。利用可能なサービスを一覧表示する簡単な Python スクリプトを作成すると、org.ofono がそこにあります。

次に、オブジェクトを一覧表示するコードを追加しました。

def list_obj(bus, service, object_path):
    print(object_path)
    obj = bus.get_object(service, object_path)
    iface = dbus.Interface(obj, 'org.freedesktop.DBus.Introspectable')
    xml_string = iface.Introspect()
    for child in ElementTree.fromstring(xml_string):
        if child.tag == 'node':
            if object_path == '/':
                object_path = ''
            new_path = '/'.join((object_path, child.attrib['name']))
            list_obj(bus, service, new_path)

bus = dbus.SystemBus()
list_obj(bus, 'org.ofono.HandsfreeAudioManager', '/')

しかし、次のエラーが発生します。

dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NameHasNoOwner: 名前 'org.ofono.HandsfreeAudioManager' の所有者を取得できませんでした: そのような名前はありません

dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: org.ofono.HandsfreeAudioManager という名前は、.service ファイルによって提供されませんでした

/etc/dbus-1/system.d/ofono.conf で、dbus のユーザー ポリシーも確認しました。

<policy user="user">
  <allow own="org.ofono"/>
  <allow send_destination="org.ofono"/>
  <allow send_interface="org.ofono.SimToolkitAgent"/>
  <allow send_interface="org.ofono.PushNotificationAgent"/>
  <allow send_interface="org.ofono.SmartMessagingAgent"/>
  <allow send_interface="org.ofono.PositioningRequestAgent"/>
  <allow send_interface="org.ofono.HandsfreeAudioManager"/>
  <allow send_interface="org.ofono.Handsfree"/>   
</policy>

<policy at_console="true">
 <allow send_destination="org.ofono"/>   
</policy>

<policy context="default">
  <deny send_destination="org.ofono"/>   
</policy>

もちろん、ユーザー "user" として ofono と上記のコードを実行します。アイデアが不足しています... 問題を解決するには、さらに何をすればよいですか?

4

1 に答える 1