Raspberry Pi3와 블루투스 연결한 스마트폰의 음악 재생을 AVRCP로 제어

소개



Raspberry pi와 블루투스로 연결된 스마트 폰의 음악 재생을 AVRCP로 제어하는 ​​방법의 메모

환경


  • Raspberry Pi3 (Raspbian Jessie Lite)
  • Python 2.7.9
  • bluez5
  • 스마트 폰 (android 또는 iPhone에서)

  • 이전 준비



    htps : // 기 st. 기주 b. 이 m / 오 q / 24에 09112b07464 아 cb이다 1
    htp : // bg. b?? 이 m / 라 sp 베 ry 피 / 라 sp 베 ry 피 b와 th. HTML
    위의 URL을 참고로 RaspberryPi를 Bluetooth 오디오(A2DP) 수신기화하여 스마트폰에서 음악 재생할 수 있는 상태로 둔다.
    (※A2DP로 접속하지 않으면 AVRCP를 사용할 수 없는 것 같지만, 어쩌면 AVRCP만으로 사용하는 방법도 있을지도?)

    AVRCP로 제어해보기



    dbus-python을 사용한 데모

    BT_MediaPlayer.py
    #!/usr/bin/python
    
    import dbus
    
    SERVICE_NAME = "org.bluez"
    ADAPTER_INTERFACE = SERVICE_NAME + ".MediaPlayer1"
    bus = dbus.SystemBus()
    manager = dbus.Interface(bus.get_object(SERVICE_NAME, "/"),
                        "org.freedesktop.DBus.ObjectManager")
    objects = manager.GetManagedObjects()
    
    if __name__ == '__main__':
        for path, ifaces in objects.iteritems():
            adapter = ifaces.get(ADAPTER_INTERFACE)
            if adapter is None:
                continue
            print path
            player = bus.get_object('org.bluez',path)
            BT_Media_iface = dbus.Interface(player, dbus_interface=ADAPTER_INTERFACE)
            break
    
        while 1:
            s = raw_input()
            if s == 'quit': 
                break
            if s == 'play':
                BT_Media_iface.Play()
            if s == 'pause':
                BT_Media_iface.Pause()
            if s == 'stop':
                BT_Media_iface.Stop()
            if s == 'next':
                BT_Media_iface.Next()
            if s == 'pre':
                BT_Media_iface.Previous()
            if s == 'show':
                track =  adapter.get('Track')
                print 'Title: ' + track.get('Title') 
                print 'Artist: ' + track.get('Artist')
                print 'Album: ' + track.get('Album')
                print 'Genre: ' + track.get('Genre')
                print 'NumberOfTracks: ' + str(track.get('NumberOfTracks'))
                print 'TrackNumber: ' + str(track.get('TrackNumber'))
                print 'Duration: ' + str(track.get('Duration'))
    
    

    위의 코드를 실행하면 입력 대기 상태가되므로 명령을 입력합니다.
    사용 가능한 명령은 다음과 같습니다.
  • quit : 프로그램 종료
  • show : 노래 정보 표시
  • play : 재생
  • pause : 일시정지
  • stop : 정지
  • next : 다음 노래
  • pre : 이전 노래

  • 잘하면 연결된 스마트 폰의 경로가 표시되며 다양한 명령으로 음악 재생을 제어 할 수 있습니다.
    아래는 show 명령을 실행한 예


    참고



    ぃ tp // 코 m / 엣 g 만 / 있어 ms / 339 아 9c9b338634 아 c27 아 5
    htps //w w. 등 sp 벨 ry 피. 오 rg / ふぉる ms / ぃぃえ w와 피 c. php? t=111486&p=766936

    좋은 웹페이지 즐겨찾기