Android端末をLinuxマシンのディスプレイにする
Android端末をLinuxマシンのディスプレイにする方法。
今回は,VNCを使って,Android端末をLinuxマシンのディスプレイにしてみる。
Linuxマシンは,VMware Workstation Playerで動かしているUbuntu 20.04を利用している。
Linuxマシンでのマルチディスプレイ
Linuxマシンで複数のディスプレイデバイスを接続して使用するマルチディスプレイを構成する方法は,いくつかの方法がある。
Linux/Unixでは,GUIとしてX Window Systemを使用している。ここでのマルチディスプレイは,GUI(X Window System)での構成方法を説明している。
- スクリーンを分割する方法
X Window Systemでマルチディスプレイを構成する最も古い方法。
物理ディスプレイのそれぞれにXのスクリーンを割り当てる。このため,各スクリーンは独立して動作する。
XのディスプレイにはDISPLAY環境変数によって:0のようにIDが一つだけ指定されるが,マルチディスプレイでは各スクリーンを指定する場合に,DISPLAY環境変数で指定する。
一番目のスクリーンは:0.0,二番目のスクリーンは:0.1といったようにアサインされる。
この方法の場合は,ウィンドウを別のスクリーンに移動させることは出来ない。GIMPやEmacsなどこの方式のマルチディスプレイに対応しているアプリケーションでは出来るようになっている。
ほとんどのアプリケーションでは,DISPLAY環境変数により表示するディスプレイを変更する。
- Xineramaを使用する
Xineramaも,Xのマルチディスプレイを実現する古い方法。
Xineramaでは,全てのディスプレイを単一のスクリーン(:0)にまとめて管理するので,複数ディスプレイ間を移動したりすることが出来る。
Xの設定ファイルをマルチディスプレイに静的に設定することで動作する。RandRのように動的に制御することは出来ないです。
- RandRを使用する
RandR(Rotate and Resize)は,Xのスクリーンを動的に変更(リサイズ,回転など)出来るようにするためのX Window Systemの拡張機能。
RandRでは,xrandrコマンドを使って動的にセッションの設定をしたり,xorg.confファイルを使って静的にも設定することが出来る。
RandRでは,複数の物理ディスプレイを仮想のディスプレイにマッピングして管理するので,アプリケーションの画面を自由にディスプレイ間を移動したりすることが出来る。
- TwinViewを使用する
TwinViewは,nVideaのビデオカードが持つ複数のディスプレイを1つのディスプレイと管理するX Window System拡張。
nVideaのビデオカード(チップ)を搭載したマシンでないと使用できない。
Android端末をLinuxマシンのディスプレイとして使用する(ミラー表示)
Linuxマシンにディスプレイが接続されていて,同じ画像をAndroid端末にミラー表示させる。
これは,VNCでリモートデスクトップを行う方法と何も変わらない。
Linuxマシン側にVNC Serverをインストールする
Linuxマシンには,VNC Serverをインストールする。Ubuntu 20.04の場合は,最初からVNC Serverであるvinoがインストールされている。
もしインストールされていない場合は,以下のようにしてインストールする。
次にVNC Serverの設定をする。
- Ubuntuのデスクトップで右クリックして,設定>共有を開く
- 右ペインの共有の右にあるスイッチをオンにする
- 画面共有のスイッチをアクティブにする
コンピューター名には,マシン名がデフォルトで入っている。
- 接続設定の画面が表示される
「このスクリーンの操作する接続を許可する」をマークする。
接続するときに使用するパスワードを設定する。
この後,Android端末とVNCで接続するには暗号化接続が使用できないので,ターミナルを起動し,
$ gsettings set org.gnome.Vino require-encryption false
として,暗号化した接続を使用しないようにしておく。
Linuxマシンが使用しているNetworkのIP Addressを以下のようにして調べておく。(ブリッジ接続)
Android端末側へVNC Viewerをインストールする
Android端末側には,VNC Viewerをインストールする。
Google Playからインストールするか,ADBからインストールする。
今回はADBを使って,
> adb install vncviewer_3.7.1.44443.apk
として
vncviewer_3.7.1.44443.apkをインストールした。
Android端末でVNC Viewerを起動し,
- +で接続先を追加する
- 接続先としてLinuxマシンのIPアドレスを設定する。接続名に適当な名前を付ける。
- 接続にはパスワードを聞かれるので,Linux側で設定したパスワードを入力する。
- View onlyスイッチをonにする。
その他は,デフォルトのままで大丈夫だった。
接続するポート番号は,デフォルトの:5900となる。
Android端末からVNCで接続する
Android端末でVNC Viewerを起動し,接続用のパスワードを使ってLinuxマシンのIP Addressに接続する。
Remember passwordをonしておくと,次からパスワード入力はしなくて済む。
接続できると,Linuxマシンのディスクトップ画面がAndroid端末に表示(ミラー)されます。
セカンドディスプレーとして使わなければ,これでAndroid端末をディスプレイとして使用できる。
Android端末をLinuxマシンのセカンドディスプレイにする
Ubuntu 20.04に最初からインストールされているvinoだと,VNCで接続するディスプレイを:1(セカンドディスプレイ)に設定する方法が見つけられなかった。
しょうがないので,別のVNC Serverを使用することにした。
# apt install tightvncserver
また,上記で行った画面共有のスイッチをオフにして,vinoを停止する。
さらに,必要であればx2vncをインストールする。これはキー入力をVNCに転送したり,マルチ画面を管理したりする。
そして,インストールしたVNC Serverを起動する。
最初に接続用のパスワード(max. 8文字)を設定する。
一度,vncserverを停止する。
VNCの接続パスワードを変更する場合は,
$ vncpasswd
Password: ********
Verify: ********
のようにする。
VNC Serverを起動する
VNC Serverを起動する。
$ vncserver :1 -geometry 1080x1920
Android端末の解像度を-geometryで設定している。2個めのディスプレイ:1を指定している。
キー操作が必要な場合は,x2vncも起動しておく。
$ x2vnc -shared -west localhost:1
これで準備が出来た。
Android端末でVNC Viewerで接続する
AndroidのVNC Viewerでは,接続IP Addressに:5901を追加する。
後は,connectで接続すれば,セカンドディスプレイとしてAndroid端末の画面が使用できる。
Linuxからセカンドディスプレイに画像を表示する
セカンドディスプレイに画像を表示して確認のするために,ImageMagickをインストールする。
# apt install imagemagick
ImageMagickのdisplayコマンドで画像を表示してみる。
$ display -display :1 xxxxx.bmp
Android端末の画面に画像が表示された。
これで,2画面のディスプレイが使用出来るのを確認できた。

新しくコメントをつける