2014年11月20日木曜日

IntelliJ IDEA で LG の QSlide アプリをコンパイルする

Qスライドのアプリ開発を行うにあたって Eclipse でのコンパイル方法は LG Developer に載っているのだが、開発環境が IntelliJ IDEA なので、Gradle ベースのプロジェクトだとどうコンパイルすれば良いのかと言う所でつまづいたのでメモ。

( この記事の内容は Android Studio においても同様に適用可能です )

1. Android SDK Manager を開き、Tools → Manage Add-on Sites を選択する。


2. User Defined Sites タブの New を選択し、
http://developer.lge.com/sdk/android/repository.xml
 を追加する。



3. SDK Manager の Packages → Reload より再読み込みする。


4. Android 4.2.2 (API 17) より、SDK Platform と LG QSlide SDK をインストールする。


5. New Project より新規プロジェクトを作成する。この時、

  • Minimum required SDK: API 17: Android 4.2 (Jelly Bean)
  • Target SDK: API 17: Android 4.2 (Jelly Bean)
  • Compile with: QSlide Add-On (LGE) (API 17)

を選択する。


6. File → Project Structure → Modules を開き、
app → Dependencies タブの Module SDK を Android 4.2.2 QSlide Add-On に変更する。


7. build.gradle を開き、
compileSdkVersion 'LGE:QSlide Add-On:17'
に書き換える。


8. サンプルが (Android SDK)/add-ons/addon-qslidesdk-lg-17/samples に格納されているので、それらを参考にコーディングを行う。

2014年11月17日月曜日

Java対策 Java用語と継承編

同級生の皆様向けにJavaの解説を、と思って書きました。
単位獲得の手助けになれば幸いです。
間違っている事も結構書くと思うのでその際はご指摘をお願いします。

---

Java対策 Java用語と継承編


ここでは「犬」を例えに使用する。

クラス


いくつかの変数、メソッドをひとまとめにして書いたもの
ここでは犬のDNAに例える

記述:
class クラス名
例:
public class Dog

インスタンス化


クラスはDNAみたいなものでそのままではほぼ何も出来ないので、DNAから生命を生み出す作業が必要になる。

(DNAに対して「お手!」は出来ないが、DNAから誕生した犬に「お手!」は可能と言った感じ)

生み出された生命体はJavaではインスタンスと呼ばれる

記述:
クラス名 変数名 = new クラス名();

例:
Dog pochi = new Dog();


メソッド


命令。C言語だと関数と呼ばれていたもの

記述:
void メソッド名(引数)
例:
public void cry() {
    System.out.println("ワンワン!");
}


コンストラクタ


インスタンス化(DNAから生命を生み出す瞬間)の時のみ呼び出される特別な命令

以下の2つの条件

  • クラス名と全く同じメソッド名を付ける
  • 返り値(voidやint)を書かない
を満たすとコンストラクタになる

変数の初期化に使うと吉

記述:
public クラス名()

例:
public Dog() {
    age=4;
}


クラス変数


普通変数をいじるにはインスタンス化が必要だが、staticで宣言したクラス変数という物は、インスタンス化が不要でいつでもどこからでも値を変えることが出来る

DNAの例えで言うと、生命体を生み出す前にDNAのパラメータを直接操作できてしまうようなもの
そしてDNAを操作すると生み出される/生み出された生命体全てに影響が及ぶ

DNAの例えを聞くと危険なように聞こえるが実際かなり危険である

記述:
public static void String type = "柴犬"

補足:
普通の変数は
Dog pochi = new Dog();
pochi.type="ブルドッグ"
という感じで変数をいじるが、クラス変数は
Dog.type="ブルドッグ"
というように変更できてしまう
これを行うと生み出された後の犬を含め全ての犬がブルドッグに強制変更となる


継承


例えば、犬だけでなく猫と鳥のクラスを作りたくなったとしよう。
それぞれのクラスには年齢や名前などの情報、鳴いたりご飯を食べたりといった動作を付けたい。
しかし
class Dog {
 〜いろいろ〜
}
class Cat {
 〜いろいろ〜
}
class Bird {
 〜いろいろ〜
}
と別々に書くのは効率が悪い。

そこで、共通点を見つけまとめられないかを検討する。

犬、猫、鳥は動物である。

つまりAnimalというクラスを作れば共通化出来そうである。
動物は共通してギャッと鳴けると思うので、仮に「全ての動物はギャッと鳴く」とする。

class Animal {
 public void cry() {
        System.out.println("ギャッ")
    }
}

では、犬は動物であるという関係を実装する。
class Dog extends Animal {
}
この場合のAnimalを親クラス、Dogを子クラスと呼ぶ。

つまり
class 子クラス extends 親クラス
と書けばクラスの継承ができる。

また、「犬は動物である」といった関係を「is-a関係」と呼ぶ。
(Dog is a Animal.)

ちなみに、この状態でDogに対してcryを呼ぶと
ギャッ
と表示されるというなんとも痛々しい実行結果になる。
そこで、鳴くという処理だけ上書きをしてしまいたい。
その場合に使用するのが「オーバーライド」である。

class Dog extends Animal {
    @Override
    public void cry() {
        System.out.println("ワンワン!");
    }
}

このように、親クラスと全く同じ名前のメソッドを作ると、処理を上書きすることが出来る。
(ちなみに@Overrideは無くても動くが、あったほうがエラーがあった時に教えてもらえやすくなる)

この状態でDogに対してcryを呼ぶと
ワンワン!
と元気よく鳴いてくれるのである。



また、上書きではなく親クラスのメソッドに書き足しを行いたい場合は、
super()
を使用する。
これを書くことで、親クラスのメソッドの内容を呼び出すことが出来る。

class Dog extends Animal {
    @Override
    public void cry() {
        super();
        System.out.println("ワンワン!");
    }
}

このcryメソッドを実行すると以下のように表示される。
ギャッ
ワンワン!


〜 まだ書き途中です 〜



2014年10月14日火曜日

MATE onboardでロック解除

MATEのロック解除画面は、デフォルトではオンスクリーンキーボードを出すことが出来ない。
ThinkPad X230 Tablet をタブレット状態で使っていると、ロック解除の度に液晶を回してキーボードでパスワードを入力しなければならず面倒だったので、オンスクリーンキーボードを有効にした時のメモを残しておく。

$ sudo pacman -S onboard
$ gsettings set org.mate.screensaver embedded-keyboard-enabled true
$ gsettings set org.mate.screensaver embedded-keyboard-command "onboard --xid"
これでタブレットモードでも困らない。


LightDM でも onboard を表示するには、/etc/lightdm/lightdm-gtk-greeter.conf を開き
keyboard=onboard
と記述すればOK。

本当なら、指紋認証を利用してサクッと解除するのが一番ドヤれる便利なのだが、この ThinkPad には残念ながら指紋認証ユニットが付いていない。もちろん後から取り付けることもできるのだが、肝心の指紋認証ユニットを手に入れるためには海外から輸入する必要があるため手が出ずにいるのであった…

2014年9月17日水曜日

IS11T で遊ぶ

先日、秋葉原某店でジャンクのIS11Tを購入しました。
お値段なんと1,880円(税別)。色々と遊んじゃいます。



2014年9月6日土曜日

ArchLinux ThinkPadトラックポイントの感度調節

ArchLinux を ThinkPad X200s や X230 Tablet に導入したは良いものの、トラックポイントの感度が鈍いためか強い力を掛けなければならず不便だったので、軽い力で動かせるように設定した時のメモ。


1. トラックポイント デバイスの詳細を調べます。
$ udevadm info -a -p /sys/devices/platform/i8042/serio1
ここで調べた SUBSYSTEM と DRIVER の値を利用して udev ルールを作成します。



2. トラックポイント デバイスに固定されたデバイス名を与えるため、udev ルールを記述します。
# nano /etc/udev/rules.d/10-trackpoint.rules
を開き、
SUBSYSTEMS=="serio" DRIVERS=="psmouse" TAG+="systemd" SYMLINK+="trackpoint%n"
を記述します。
systemd タグを付与する事で、systemd がデバイスの認識を検知し、サービスの実行を待つことが出来ます。



3. 起動時に感度調節を行うための systemd サービスを記述します。
# nano /etc/systemd/system/trackpoint.service
を開き、
#!/bin/sh

[Unit]
Description=Set Trackpoint sensitivity
Wants=dev-trackpoint1.device
After=dev-trackpoint1.device

[Service]
ExecStart=/bin/bash -c 'echo -n 220 > /sys/devices/platform/i8042/serio1/sensitivity'

[Install]
WantedBy=multi-user.target

を記述します。
Wants 行と After 行の dev-trackpoint1.device は、環境によって dev-trackpoint0.device だったりするので、うまく動かない場合は
$ ls /dev
でデバイス名を確認すると良いでしょう。

sensitivity に設定している値 220 は 1 〜 255 の間であればお好みで。
デフォルトは 128 です。


4. サービスを有効にします。
# systemctl enable trackpoint.service


5. 再起動します。
$ reboot

F-07Cで遊ぶ - その5 ArchLinux WLANを設定する





F-07C には Atheros 社製の AR6003 という WLAN チップが搭載されています。
普通のPCであれば、 WLAN チップは PCI もしくは USB で接続されていますが、
このチップは厄介な事に SDIO カードとして接続されています。

その為、 NetworkManager を導入するだけでは WLAN を利用することは出来ません。

2014年4月10日木曜日

ArchでFingerprint-GUIを使えるようにするまでのメモ

ThinkPad X200s に搭載されている指紋認証デバイスを Arch Linux で使えるようにするまで苦戦したのでメモ。

1. 入れる
$ yaourt -S fingerprint-gui


2. 指紋認証デバイスの場所を調べる
$ lsusb


3. AuthenTecのデバイスを探す
Bus 002 Device 002: ID 08ff:2810 AuthenTec, Inc. AES2810
ここで、 08ff:2810 (デバイスごとに異なる)をメモしておく


4. 固定されたデバイス名を得るためのルールを作る
$ sudo nano /etc/udev/rules.d/96-fingerprint.rules


5. 以下を記述する
SUBSYSTEMS=="usb", DRIVERS=="usb", ATTRS{idVendor}=="08ff", ATTRS{idProduct}=="2810" SYMLINK+="usbfingerprint%n" TAG+="systemd"
ここでの idVendor 、 idProduct の値は、先ほど lsusb で調べた「08ff:2810」を入れる。


6. 再起動
$ reboot


7. usbfingerprint1 ができているかを確認する。
$ ls /dev


8. 指紋認証デバイスを通常ユーザーでも操作できるようにするため、起動時にデバイスの権限を変えるためのサービスを作る。
$ sudo nano /etc/systemd/system/fingerprint.service


9. 以下を記述する。

#!/bin/sh

[Unit]
Description=Set Fingerprint permission
Wants=dev-usbfingerprint1.device
After=dev-usbfingerprint1.device

[Service]
ExecStart=/bin/bash -c 'chmod 666 /dev/usbfingerprint1'

[Install]
WantedBy=multi-user.target

rules に TAG+="systemd" を書いた上で Wants= と After= に「dev-デバイス名.device」を記述すると、デバイスが認識されるまでサービスの実行を待つようになる。


10. サービスを有効化する
$ sudo systemctl enable fingerprint.service


11. 再起動


12. 指紋を登録する
$ fingerprint-gui


13. 確認する
$ fingerprint-identifier


14. 指紋で各種認証を突破できるように設定する

/etc/pam.d/lightdm や /etc/pam.d/sudo を開き、
#%PAM-1.0 の下に以下を記述する。
auth  sufficient  pam_fingerprint-gui.so

2014年3月1日土曜日

F-07Cで遊ぶ - その4 ArchLinux microSDへの導入



Arch Linux をインストールするにあたり、直面するのが本体容量の少なさです。
F-07C の本体 eMMC の容量は約 32GB と小さく、かと言って万一の事を考えるとリカバリ領域を削除するのは良い方法ではありません。

そこで、Arch Linux を microSD にインストールすることで、本体容量の問題を解決することができます。

※ただし、 /boot のみ本体 eMMC に作成する必要があります。

2014年2月22日土曜日

F-07Cで遊ぶ - その3 ArchLinux インストール



F-07C に初期搭載されている OS と言えば Windows 7 Home Premium ですが、前々回の記事でも書いた通り、快適に動作するとは言いがたいのが現状です。

そこで、軽量ディストリビューションの一つである Arch Linux を導入することにしました。



F-07Cで遊ぶ - その2 USBホストケーブル編



さて、F-07C のカスタマイズに欠かせない物といえば、ずばり USB 端子ですね。
USBメモリでのデータのやり取りはもちろんの事、Windows ですのでプリンタやペンタブを接続したり、さらにはCDドライブやUSBメモリ経由でOSのインストールも可能になります。

そのためには純正のクレードルを購入する必要があるのですが、USB x4 + HDMI 出力、さらに冷却ファン搭載という贅沢仕様と引き換えにお値段なんと9,970円となっています。



さすがにUSB端子1つのために1万円は厳しいので、先人の知恵をお借りしてUSBホストケーブルの自作を行うことにしました。

2014年1月10日金曜日

VAIO type P に Arch Linux を入れた

秋葉原の中古PCショップでVAIO type P ( VGN-P70H ) のOS無しを購入しました。


仕様は以下の通りです。
CPU Atom Z520 1.33GHz
GPU GMA500
RAM 2GB
HDD 60GB
液晶 8型 1600×768

このスペックでWindowsを動かそうにも、重くて常用に耐えないことは容易に想像がつきます。
そこで、友人のNomuken氏の勧めもありArchLinuxを導入することにしました。

導入の手順は、基本的にはBeginners' Guideに従います。
つまづいた箇所をメモ代わりに記録しておきます。