小さな進展

忘れていたわけではないのですが。
GPS Loggerのその後です。
テスト結果
ちゃんと設定時間(15sec)おきに、高度もとれるようになりました。
探してみたら、NMEA形式でも出力できますね。
Android で GPS 衛星からの情報を NMEA 形式で取得する方法Add Starkinneko
残る問題はサーバへのログの送信です。
原因を探ってないのですが、なにかしら不安定。
現在はサーバへWeb APIで送ってますが、
DropBoxとか経由したほうが使いでがあるかな?

Android Studio インストール

ごちゃとしてきたので、自分的にまとめ。
[ Android Studioのインストール ]
マシン: lenovo ThinkPad E135 (64ビット)
OS: Ubuntu 15.04 日本語 Remix
■Java (oracle-java7)
> sudo add-apt-repository ppa:webupd8team/java
> sudo apt-get update
> sudo apt-get install oracle-java7-installer
参考:Ubuntu14.10 で Android Studio を使うための方法
 http://qiita.com/hina_yukimura/items/c11bd9e8542ccbe6257a
■kvm
> sudo apt-get install qemu-kvm libvirt-bin
> sudo adduser (user) kvm
> sudo adduser (user) libvirtd
過去:Android開発環境インストール メモ
http://riverotter.xsrv.jp/wp/2014/08/android-3/
■Android Studio
本家からダウンロード、
Android Studio
 https://developer.android.com/sdk/index.html#top
解凍して/opt/android-studio(例えば)に置きます。
bin/studio.shから起動すると、
Unable to run mksdcard SDK tool
と怒られるので、インストールページに書いてあるia32-libsやらをインストールします。
> sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6 libc6-i386 lib32gcc1
これで起動できました。

Ubuntu 久しぶり

(Gnomeでない) Ubuntuを久しぶりにインストールしてみました。
Ubuntu 15.04 日本語 Remix リリース
 http://www.ubuntulinux.jp/News/ubuntu1504-ja-remix
からubuntu-ja-15.04-desktop-amd64.isoをダウンロードしてインストール。
マシン: Lenovo ThinkPad E135
unetbootinでusbに焼いて起動。
起動時にEthernet(Wired, Wifi共)を認識しない(?)が気にせず続行。
完了後には、
・Wifiを認識してる
・Two finger scrollできる
・ボリューム、液晶の輝度調整など問題ないみたい
 ただし、再起動すると液晶の輝度が最大に戻る、[ctrl]+[F7/F8]で以前の輝度に戻る
・日本語はFcitx + mozcが標準、[ctrl]+[space]で切り替え
至って普通にできました。
ところでMirになったんだっけ?
■追記
ついでにAndroid Studioをインストール
参考:Ubuntu14.10 で Android Studio を使うための方法
 http://qiita.com/hina_yukimura/items/c11bd9e8542ccbe6257a

Androidでラジオ アプリを起動する

permissionは特に必要ありませんでした。
基本、クラス名の調べ方は次を参考にしました。
外部アプリ起動Intent発行まとめ @Qiita
例えば、NHKのアプリ「らじる★らじる (Google Play)」の場合は、
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setAction(“android.intent.category.LAUNCHER”);
intent.setClassName(“jp.nhk.netradio”, “jp.nhk.netradio.ActRoot”);
intent.setFlags(0x10200000);
startActivity(intent);
以下、差異のみ
// radiko (Google Play)
intent.setClassName(“jp.radiko.Player”, “jp.radiko.Player.ActCustomSchema”);
// 超A&G+ (公式) (Google Play)
intent.setClassName(“jp.mitene.ag”, “jp.mitene.ag.Splash”);
// 超オプ (超A&G+ファンアプリ) (Google Play)
intent.setClassName(“jp.gr.java_conf.tta.agop”, “jp.gr.java_conf.tta.agop.MainActivity”);
こんな感じで起動できました。

カレンダー型のランチャーについて

んーと考えていたAndroidアプリ、
カレンダー型のランチャーについて
録音の設定とか、色々と基本技術を考えていたら、何だか…
やりたいことを適当に上げてみる。
サーバ側
a. Webインターフェイスで録音設定(毎週、時間変更等)
b. 前後1分で録音してるので、その部分の自動削除
c. ReadyMediaに自動登録
d. 月、週、日ベースのハンドリング
クライアント側
1. 月、週、日ベースの表示
2. m4a, mp3, mp4の再生 (再生アプリの起動)
3. ラジオアプリの起動
4. 録音の設定
うーん、Androidアプリよりも、サーバ(ReadyMedia)の拡張?
Wrapperを先に作ったほうが楽しいかな?
とりあえず、基礎技術のテストを引き続き行います。

Jessie インストール

インストール (ISK310-Fusion の場合)
・Jessieをインストール
・headlessで運用するのでGUIは要らないが、テスト等含めて、Gnomeも入れてみた。
■BIOS
起動時に
[F1] でBIOSメニュー、
[F12]で起動ドライブの選択。
■インストール
・debian-live-8.0.0-amd64-gnome-desktop.iso を UNetBootIn で USBに焼いてインストール。
・Graphical Installを選択してもテキストモードになる。
・ネットワークのインストールでメッセージ。
 「rtl_nic/rtl8168e-2.fw が無いので、…」
 と怒られるが無視して続行する。
再起動すると、Gnome3が起動してくれる。
とりあえず大きな問題はないようだ。
wheezyのようにfirmware-linux-nonfreeをインストールしなくてもいいようですね。
■sudo
# apt-get install sudo
次でユーザを追加
# visudo
 hoge ALL=(ALL) ALL
■ホームディレクトリの日本語フォルダを英語にする
$ LANG=C xdg-user-dirs-gtk-update
■シェルスクリプトパス(~/sh)の追加
$ vi ~/.bashrc
次を追記
PATH=”$PATH”:~/sh
■sshdの準備
# apt-get install sshd
# vi /etc/ssh/sshd_config
PasswordAuthentication no ← パスワードのみ(RSA key なし)の接続を禁止する
ChallengeResponseAuthentication no ← 公開鍵認証のみ使うので
sshのキーを作成
$ ssh-keygen -t rsa
$ cp ~/.ssh/id_rsa.pud ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
プライベート キー(~/.ssh/id_rsa)をクライアント マシンに移動。
クライアントからの接続は次のように、
$ ssh -i id_rsa hoge@192.168.2.20
■ WOL (マジックパケットで起動する設定)
必要なbiosの設定はマシンにより異なるので割愛。
そんなに分かりにくくはないと思う。
$ su –
でrootになる。
いろいろインストールしておく。
# apt-get install acpid wakeonlan ethtool etherwake
MACアドレスを確認しておく。
# ifconfig
 「ハードウェアアドレス xx:xx:xx:xx:xx:xx」と表示される。
WOL (wake on lan) の設定。
ip アドレスを固定にして、WOLの設定を追記
# vi /etc/network/interfaces
 iface eth0 inet static
 address 192.168.2.20
 network 192.168.2.0
 netmask 255.255.255.0
 broadcast 192.168.2.255
 gateway 192.168.2.xx
 ETHTOOL_OPTS=”wol g”
acpidを開始しておく。
# /etc/init.d/acpid start
 これをしておかないと、shutdownしても、(準備はできているが)電源が落ちない場合がある。
 …Reboot: Power Down
 で止まったままになる場合がある?
普通に終了する。
# shutdown -h now
or
# halt -p

Debian 8 Jessie リリース

なので、とりあえずインストールしてみようとしてたら、
WindowsがUpdateで再起動を繰り返し、不調…
ようやく修復したと思ったら、Grubが起動しない。
ということで、Ubuntu Gnome 15.4 を上書きインストール。
ついでにAndroid Studioをアップデート。
無駄に半日ほど時間を使いました。
もぅ、Windwosをメインマシンから追い出したほうがいいかなぁ。

Objective-c 事始め

まぁ色々ありまして、Objective-cを触ってみることにしました。
Mac買ってXcodeで…というのが定石らしいですが、先立つものが、ねぇ。
とりあえず、GUIまわりは無くても何とかならないものかとGoogleってみたら、
Xcodeの中ではgccが動いてる?
MacOS XはBSD系だし、ということはunix系にも優しいかな…
…debian等でもObjective-cのパッケージがあるんですね。
どうやらNeXT以来(?)、Objective-cはopenな開発環境であるようです。
Objective-c @wiki
gcc 4.6以降ではObjective-C 2.0にも対応しているらしい。
まずは使ってみます。
インストールはこちらを参考に、
http://www.net.c.dendai.ac.jp/programming/objc/kankyo/

> sudo apt-get install gobjc libgnustep-base-dev gnustep gnustep-devel

簡単なコードでテストしてみます。
http://d.hatena.ne.jp/elm200/20080426/1209211127

#import <objc/Object.h>

int main() {
 printf(“Hello World!\n”);
 return 0;
}

とコードを書いてtest1.mで保存、
コンパイルはObjective-cのライブラリを指定して、

> gcc test1.m -lobjc

warningが出ますが、無視して進む。

> ./a.out
Hello World!

動きました。

少しだけ広い世界

とはいえ、広いことはいいことだ?
Nexus5の画面の話です。
How to make your Nexus 5 screen bigger @AndroidPIT
root化する必要なくできるので試してみました。
Android Studioを既に入れてあるので、簡単にできました。
おぉ、画面が広い(笑
いくつかのアプリで画面表示の乱れがありますが、
おおよそもんだいなさそうなので、しばらく使ってみます。