この文書では,ディジタルカメラをRaspberry Piをはじめとするコンピュータで操作するlibgphoto2をJavaで制御する方法について書かれています.

  1. 実行環境

    • コンピュータ : Raspberry Pi 3 type B
    • OS : Raspbian Stretch (2018.11版)
  2. 概要

    libgphoto2はCで書かれたライブラリであり,Linuxであれば*.so,Windowsであれば*.dllのような動的ライブラリで提供されます.つまり,ネイティブコードで書かれているわけです.これをJNA(Java Native Access)により動かします.
  3. 手順

    まず,JNAをインストールします.
    sudo apt-get install libjna-java

    上のようにすると,jna.jarが/usr/share/javaに配置されます.もちろん,これをIDEでライブラリのパスに追加すればよいのですが,RemoteVMを利用する時,同じプロジェクトに入っていた方がいろいろと都合がいいため,上記のディレクトリからjna.jarをコピーし,ローカルへ置いた方が良いです.
    つぎに,libgphoto2をインストールします.

    sudo apt-get install libgphoto2-dev

     つぎに,libgphoto2-javaをダウンロードとjar化します.こちらにあるサイトからgphoto2-javaをダウンロードします.これをeclipseなどでプロジェクトで新規作成し,srcフォルダに入れ,ライブラリ化します.ここではlibgphoto2-java.jarとしました.

    最後にgvfsによるカメラ内部にあるメディアの自動マウントを停止します.gvfs-gphoto2-volume-monitorが自動的に動作してしまうため,カメラの制御が行えません.そこで,下のようにしてgvfs-gphoto2-volume-monitorを動作できないようにします.

    sudo chmod -x /usr/lib/gvfs/gvfs-gphoto2-volume-monitor