まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:android

日本での正式な発売直後に品切れになり、しばらく入手できなかったラズベリーパイ 400 (以下「ラズパイ 400」)の販売が再開されたようです:
品切れだったラズパイ内蔵キーボード「Raspberry Pi 400」日本語版、販売を再開 9790円



幸いなことに自分はこれ(日本語キーボード版)を入手することができていました。そして罰当たりなことに、このラズパイ 400 を「起動したまま SSH で使う」という使い方をしていました。SSH 接続ならなにもラズパイ 400 じゃなくて普通のラズパイでも・・・という声が聞こえてきそうです。ごめんなさい、その通りだと思いつつ使ってました。

言い訳をするつもりはないのですが、ラズパイ 400 はキーボード本体内にラズパイ4(4GBモデル)が内蔵されているもので、ここに電源とモニター(と現実的にはマウス)をつないで使うことになります。マウスは Bluetooth でもよいので物理的な接続は必須ではなく、(内蔵バッテリーがないため)電源をつながないといけないのは仕方ないとして、モニターもつながないと実質的に使えないというのが普段使いにはちょっとしたハンディキャップになっていました。本体とキーボードのセットと考えるとかなり小型化されていて持ち運びに便利な一方で、モニターも HDMI ケーブルごと持ち歩かないといけないのだとするとラズパイ 400 の機動性はかなり落ちてしまいます。モニターのある部屋からモニターのある部屋へ移動して使うにはいいんだけど、それだと利用シーンはかなり限られてしまうような気もしてしまいます。。

で、今回のブログのテーマとなります。そんなラズパイ 400 ですが、普段から持ち歩いているスマートフォン(スマホ)をモニター代わりに使うことができるのであれば、実質的にモニターを持ち歩いているようなものなので、上述の課題を解決できるのではないかと考えました。これは実現性を無視した都合のよい話ではなく、HDMI input をサポートした Android 11 以降であれば理論上はできるはず、、ということで試してみたのでした。ちなみに iOS だとまだこの機能はサポートされていない模様です。


【システム構成】
今回試したシステム構成はこのような形です:
2021091901


通常、ラズパイとディスプレイとを HDMI ケーブルで接続するのですが、そのディスプレイの代わりにスマートフォンを使うことになります。その際に HDMI ケーブルをスマートフォンの端子(USB Type-C)にアダプタで直接変換すればよいわけではなく、間にキャプチャーカードと呼ばれる機器を挟む必要があります。今回は以下の「BANANAJOY ビデオキャプチャカード」を使いました:



また、このキャプチャー結果の信号を USB Type-C 端子を持つスマホに送るための変換ケーブルとしては以下の「MacLab. USB Type-C OTG 変換 ケーブル」を使いました:



加えて、スマホ側にも単に信号を送っただけではディスプレイとして表示されないので、「スマホを外部ディスプレイ化するアプリ」が必要です。今回はこの「USB Camera」アプリをダウンロードして使いました。なおこのアプリは無料ですが、有料版(USB Camera Pro)だと広告が表示されないだけでなく、画面サイズを変更できるなどの追加機能が使えるようです:
USB Camera - Connect EasyCap or USB WebCam


ちなみに今回の実験で使ったスマホはこの Unihertz Titan Pocket です。この機種である必要はありませんが、Android 11 が搭載されている必要があると思っています:
QWERTYキー付き小型スマホ、Unihertz「Titan Pocket」が到着!

※あと今回のレビューでは使っていませんが、この機種だと標準アプリとして「USBカメラ」というものが含まれていて、これで外部ディスプレイ化できることも確認できました。


で、上述のシステム構成のようにラズパイ 400 、HDMI ケーブル、キャプチャーカード、OTG 変換ケーブル、そしてスマホを接続し、スマホにインストールした USB Camera アプリを起動した状態でラズパイ 400 に電源を入れると・・・
IMG_3924


↑ラズパイ 400 が起動し、その画面がスマホ内に表示されました!期待通り!!

↓ブラウザとターミナルを開いて使っている時の画面の様子がこちらです:
IMG_3925


あっけなく実現できてしまいました。今回スマホとして使った Unihertz Titan Pocket は決して広い画面を持っているわけではないので、実用性という観点ではあまりよくないかも(苦笑)しれません。まあ、でも普通の画面(?)の Android 11 を所有していて、有料版の USB カメラアプリで画面をポートレートモード(横)固定で使えばもう少し見やすくなりそうだと思ってます。

※ここでスマホに表示される画面はあくまで「外部ディスプレイ化されたスマホに単に表示されている画面」です。タッチ操作に対応はしていません。タッチしても何の反応もありません。


さて、ということはラズパイ 400 を持ち歩いて使う上で、かなり進展があったと思っています。何しろ「普段から外部ディスプレイ(=スマホ)を持ち歩いていた」ことになるので、接続用のケーブル類だけ持ち歩いていればどこでもラズパイを使える、ということになります!!

その接続用に持ち歩くケーブル類ですが、具体的には・・・
・電源ケーブル(USB-C ケーブルと、コンセントにつなぐ電源アウトレット)
・Micro HDMI -> HDMI 変換アダプタ
・HDMI ケーブル
・HDMI キャプチャーカード
・USB Type-C OTG 変換ケーブル
・外付けマウス(有線か、または Bluetooth)


・・・んー、意外と多いな(汗) (^^; それと結局バッテリーがないからコンセントかモバイルバッテリーに繋いで使う必要があるんですよね。これが次のネックになりそうな気がしてきました。。

※なお、HDMI キャプチャーカードが利用する電源は出力側(スマホ側)から使われる模様です。つまりこの仕組を使っている間、スマホ側のバッテリーは想定以上に消費されることになる点に注意してください。


ともあれ、Android 11 が使えるユーザーにとってはフルキーボード付きの Debian Linux 環境を持ち歩いて使える手段の目途が立つ実験結果でした。


クラウドファインディングサイト "KICK STARTER" で出資した「世界最小4Gスマホ」を唄う "Jerry Pro" の完成品が届きました:
2017092301


箱を開けた状態がこれです。比較のため iPhone6 を隣においてますが、厚み以外は Jerry Pro の箱の方が小さいですw:
20170923


ここでサイズのスペックを書いておくと、本体は 43mm x 92.3mm x 13.3mm で、バッテリー込みで60.4 グラムです。今回購入した Jerry "Pro" とは別に Jerry というモデルもありますが、RAM と ROM のサイズだけです(Jerry($79) は 1GB + 8GB、Jerry Pro($95) は 2GB + 16GB)。バッテリーサイズは 850mAh で、最近のスマホと比べると流石に心もとないかもしれませんが、「大画面で動画を観る」ような使い方はないので大丈夫、なはず!! (^^;

カメラは背面 8MP + 正面 2MP で、画面サイズは 2.45 インチ(!)で 240 x 432 ピクセルです。そうそう、こういうのが欲しかったわけですよ。

ちなみに色は白、黒、青から選択できました。自分はなんとなく「青を買わないといけない」気がしたのでケースと併せて青にしておきました。 (^^;

左手でグリップした時の違いはこんな感じ。iPhone6 は親指を立てて握ることになりますが、Jerry Pro を同じ位置で握ると親指が余ってしまうので親指も曲げて握る感じになります:
20170923


最近のスマホでは珍しいと思いますが、裏蓋を(爪とかで)開けるためのロッチがあります:
IMG_1552



バリバリッ、と開けるとこんな感じ。バッテリーは(入手できればですが)自分で交換することもできそうです(最近のは精密になりすぎて、こういう仕組みが少ないのが残念):
IMG_1553


充電池をはずすとカード類を格納する部分が現れます。デュアルSIM機なので nano SIM が2つ同時に入ります。MicroSD カードもここから挿します。なおこの仕様により、SIM の差し替えには一度電源を OFF にする必要があります(電源を入れたまま SIM を差し替えることはできません):
IMG_1554


別売り(今回の KICKSTARTER のでは付属)のジャケットを換装して握り直してみた様子がこんな感じです:
IMG_1555


ここからは実際に電源を入れた画面になります。スクリーンショットでもよかったのですが、サイズ感をわかりやすくする目的で手と一緒に別カメラで撮影しました。ちなみに自分の手は男性としてはかなり小さいはずです(トレーニンググローブだとS サイズ)。


電源を入れた起動直後の画面です。うーん、この時点で見たこと無いくらい小さい。アイコンは3列しかなさそう:
IMG_1556


設定画面からスペックを確認しました。Android 7.0、クアッドコア、RAM メモリ 2GB。ROM の 16GB は MicroSD で拡張できるので気にしてません。最近アンドロイドスマホをあまり買っていなかったこともありますが、Android 7.0 搭載機を使うのは初めてかも:
IMG_1557


普段使いの日本語入力 simeji を入れて日本語フリック入力画面を確認してみました(検索履歴は無視してくださいw)。やっぱ入力はキツそうだな~(なぜか嬉しそう):
IMG_1560


英語フルキーボードだとこんな感じ、これはかなりキツいぞ・・・実際、普段のスマホと比べると打ち間違い率はそれなりに高い印象です:
IMG_1561


個人的にはあまり使わないのですが、テンキー入力はこんな感じ:
IMG_1562


Android なので普通にできることですが、日本語表示+日本ロケールに設定しました:
IMG_1564


パターンロック解除画面です。これでもかなりコンパクトになってるのがわかるかも:
IMG_1565


試しに Google Play Store を起動してみました。全体的に「詰まってる」感がありますね:
IMG_1566


とりあえずはこんな感じ。正直、テキスト入力にはあまり適したデバイスとは思えないので、今まで以上に音声入力を駆使することになるかもしれません。

でもその難点を克服して余りある魅力の詰まった端末です。最近のスマホは大型化がトレンドになっていて、昔のウォークマンみたいな「限られた小さい空間に技術を詰め込む」のが大好きな人間としては「このトレンドに一石を投じる意味でも、こういう考えのスマホが欲しかった」のでした。


Android アプリケーションを開発するための統合環境 Android Studio を CentOS に導入する手順を紹介します。なお、Android Studio は GUI を使うので、CentOS に X Window System などのデスクトップ環境を導入し、かつ VNC などを使って(ターミナル画面ではなく)デスクトップ画面にアクセスできるような環境が構築できているものとします:
2016011701


まず Android Studio を利用するための前提として、1.7 以上の JDK が導入されている必要があります。推奨環境は Oracle Java のようですが、OpenJava(OpenJDK) でも動くようです。というわけで OpenJDK の 1.7.0 以上を導入します(以下の例では 1.8.0 を導入しています):
# yum install java-1.8.0-openjdk-devel

環境によっては 1.7 未満の Java が導入されていて、かつそちらがデフォルトに設定されてしまっている場合もあります。その場合は alternatives コマンドでデフォルトを 1.7 以上に変更しておきます:
# alternatives --config java

3 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
   3           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java


例えばですが、↑この例では 1.6, 1.5, 1.8 の3つのバージョンが導入されていますが、1.8 を使いたい場合は 3 を選択してシステム上のデフォルト Java バージョンを変更します。


JDK の準備ができたら Android Studio をダウンロードしてインストールします。このダウンロードページ内の、(画面上部の "SDK Tools Only" ではなく)下の方にある "All Android Studio Packages" から、Linux Platform 用の最新版モジュールをダウンロードします。この図の例では android-studio-ide-141.2456560-linux.zip というファイルを CentOS 環境内にダウンロードします:
2016011702


CentOS 側ではダウンロードしたファイルを適当なフォルダ(↓の例では /opt/AndroidStudio)内に展開します:
# mkdir /opt/AndroidStudio
# cd /opt/AndroidStudio
# wget https://dl.google.com/dl/android/studio/ide-zips/1.5.1.0/android-studio-ide-141.2456560-linux.zip
# unzip android-studio-ide-141.2456560-linux.zip
# rm android-studio-ide-141.2456560-linux.zip

ここからはデスクトップ環境を使ってセットアップを行います。CentOS のデスクトップ環境にログインして、先程展開した中の android-studio/bin/studio.sh を実行して、セットアップウィザードを起動します:
# cd /opt/AndroidStudio
# ./android-studio/bin/studio.sh

セットアップウィザードの最初に過去の同環境を引き継ぐかどうかを聞かれます。全くの新規で引き継ぐデータがない場合は "I do not have a previous version of Studio or I do not want to import my settings" を選択して "OK" をクリックします:
2016011701


Android Studio が起動します:
2016011702


最初の起動時にセットアップウィザードが実行されます。"Next" をクリックします:
2016011703


セットアップタイプを選択する画面では "Standard" を選択します:
2016011704


セットアップ内容の確認画面です。問題なければ "Next" をクリックします:
2016011705


最終確認画面です。このまま "Finish" をクリックするとセットアップが開始され、しばらく待ちます:
2016011706


セットアップが完了すると、そのまま Android Studio の起動画面に移行します:
2016011707


以前に試した時よりも設定内容が少なく、洗練された印象です。

 

先日の速攻レビューの時には知らなかったのですが、最新の BlackBerry OS では Android のネイティブアプリが(ある程度)動くような互換性があるようです。

ということは、BlackBerry ネイティブにないアプリを Android アプリで補完することもできる!?

その実用性を試そうとしたのですが、「では BlackBerry でどうやって Android アプリを入手するのか?」という別の問題が発生しました。Android でアプリを入手する一般的な方法は Google PLAY ストアアプリからですが、BlackBerry にはこのアプリがありません。。

が、その点で BlackBerry Passport には強い味方が最初からインストールされていました:
IMG_20150211_103554



アマゾン独自の Android 向け AppStore である Amazon Appstore アプリです。なんとこいつがプリインストールされていました。Google PLAY ストアほど充実しているわけではありませんが、これを使うことでアンドロイドアプリを探してインストールすることができるようです!
IMG_20150211_103600



早速試してみました。まずは待望のアングリーバード、こちらは正方形スクリーンでの描画も含めて問題なさそうでした:
IMG_20150211_103511


もう1つはジョルテ。こちらは起動には問題ないのですが、正方形の画面に未対応のようで、全体的に左に寄った画面構成になってました。ただ実用性に問題はなさそうです:
IMG_20150211_103537


この方法で SSH クライアント(vSSH) も VNC クライアント(Mocha VNC Lite) も入手できました。


残念ながら、やはり Amazon Appstore での品揃えはやはり限られていて、例えば LINE などはありません。別のもう少し高度というか、面倒な方法で apk ファイルを入手/転送する必要がありそうです。具体的には MyAppSharer あたりを使うことになりそう。ただそれでもアプリが正しく動く保証はありません。個別に使って調べないと。

とはいえ、この Android アプリとの互換性があるというのは、かなり強力な朗報です。BlackBerry 端末を使う以上はなんらかの形で活用することになりそう。



 

Android の開発環境、多くの人は Windows か MacOS X 上で構築すると思いますが、天邪鬼なので Linux(CentOS) で構築してみました。ちょっとコツが必要だったので、その備忘録です:

【環境】
OS: CentOS 6.6(64bit)
  (yum で X Window System, Desktop, JDK 1.7, firefox 導入済み) 
Eclipse: Eclipse LUNA(4.4.1)
  IDE for Java Developers を http://www.eclipse.org/ からダウンロード 

↑普通に CentOS 上で Eclipse + Java の開発環境を用意します。ここから先を説明します。


まずは Android SDK Manager をダウンロードして用意します:
http://developer.android.com/sdk/

↑ここから "SDK Tools Only" と書かれた箇所の Linux 用 Package の最新版をダウンロードします。ここでは android-sdk-r24.0.2-linux.tgz というファイルを /tmp にダウンロードしたと仮定します。

これを展開します:
# cd /usr/local/src
# tar xzvf /tmp/android-sdk-r24.0.2-linux.tgz

Path に tools ディレクトリを追加します:
# vi /etc/bashrc
  :
  :
export PATH=${PATH}:/usr/local/src/android-sdk-linux/tools
(↑この一行を最後に追加して保存)

Eclipse にプラグインを追加します。Eclipse を起動し、メニューから Help - Install New Software を選択して、"http://dl.google.com/android/eclipse/" を追加して、全ツールをインストールします。


全ツールインストール後に Eclipse の再起動が促され、再起動すると Android SDK コンポーネントのインストールが促されます:
2015012701


"Open Preferences" をクリックするとプリファレンスが開きます。ここで Android の SDK Location 上記フォルダを指定して、Apply をクリックします。
2015012702


ここで SDK Manager 経由でのビルドツールのインストールが促されます。"Open SDK Manager" をクリックします:
2015012703


Android SDK Manager が開きます:
2015012704


利用可能な項目のうち、ビルド対象にするバージョンを選択し、チェックを入れてインストールします。この辺りは下記の参考サイトを参照ください。


で、ここからが今回自分で体験して分かった内容です。実はこれだけだと Eclipse 内でエミュレーターの起動ができませんでした。adb や ddms の起動もできません。

僕の場合はライブラリが足りないことが原因でした。以下を実行して解決しました:
# yum install ld-linux.so.2
# yum install libstdc++.so.6
# yum install libz.so.1

2015012705



(参考)http://android.keicode.com/devenv/install-sdk-linux.php


 

このページのトップヘ