Java8
・Java8をもっと勉強しましょう
http://d.hatena.ne.jp/nowokay/20130524#1369358126
http://d.hatena.ne.jp/nowokay/20130523#1369294833
http://acro-engineer.hatenablog.com/entry/20130206/1360109385
・IntelliJ IDEAはJava8に対応してるみたい
IntelliJ IDEA
・Android Studioのベース
http://www.jetbrains.com/idea/
・詳しい説明あります
http://gihyo.jp/dev/serial/01/android_studio/0001
Gradle
keystore
Google I/O 2013
5月15日~5月17日に開催されたみたいです。
・Android Studioを使ってみたい!!
http://developer.android.com/sdk/installing/studio.html
http://codezine.jp/article/detail/7148
・Google Glassほいんだけど。。。
http://goo.gl/8uEi4″ title=”http://goo.gl/8uEi4
http://d.hatena.ne.jp/bs-android/20130517/1368745827
・各地で報告会あるみたいです。
https://sites.google.com/site/devfestjapan2013/
Java 8 また延期
ご無沙汰でした。
もっと頻繁に更新しよと思うので、とりあえず興味のあった記事をピックアップしていきます。
・Java8また延期
http://www.infoq.com/jp/news/2013/05/Java_8_Delayed
nxtOSEK 環境構築
以下のサイトを元に環境構築
http://www2.denshi.numazu-ct.ac.jp/lego/NXT/nxtOSEK/1_donyu/1_install.html#cygwin
※手順どおりにやればできる。GUN ARMのバージョンを間違えてしまうと、半日くらい嵌ることになるので注意
lambda式 (続)
■例1 : リスト
import java.util.*;
public class Main1 {
/* 引数に指定される関数のインタフェース */
public static interface ItemWithIndexVisitor<E> {
public void visit(E item, int index);
}
/* リスト内の要素出力関数 */
public static <E> void eachWithIndex(List<E> list, ItemWithIndexVisitor<E> visitor) {
for (int i = 0; i < list.size(); i++) {
visitor.visit(list.get(i), i);
}
}
public static void main(String[] args) {
List<String> list = Arrays.asList("A", "B", "C");
eachWithIndex(list,
(value, index) -> {
String output = String.format("%d -> %s", index, value);
System.out.println(output);
}
);
}
}
■例2 : java.util.function.Functionインタフェースの利用
import java.util.*;
/* (該当ソースをコピーして、貼り付けています) */
interface Function<T, R> {
public R apply(T t);
/**
* Combine with another function returning a function which preforms both
* functions.
*
* @param <V> Type of output objects from the combined function. May be the
* same type as {@code <U>}.
* @param after An additional function to be applied to the result of this
* function.
* @return A function which performs both the original function followed by
* a second function.
*/
public default <V> Function<T, V> compose(Function<? super R, ? extends V> after) {
Objects.requireNonNull(after);
return (T t) -> after.apply(apply(t));
}
}
public class Main2 {
public static void main(String[] args) {
/* 理解用 */
Function<Integer, Integer> f =
(Integer x) -> {
System.out.println("apply1");
return x + 2;
};
System.out.println(f.apply(4));
Function<Integer, Integer> f2 = f.compose(
(Integer x) -> {
System.out.println("apply2");
return x + 3;
});
System.out.println(f2.apply(4));
}
}
————————————————
■例1の型推論が何気にすごい
eachWithIndexの第1引数 : List<String>型
eachWithIndexの第2引数 : ItemWithIndexVisitor<String>型
=> ItemWithIndexVisitor<String>のvisitメソッドを実装している
=> valueがString型, indexがint型
N-03E 実機デバッグ環境構築
実機デバック環境の構築手順忘れていたので、まとめる。
(ADT,SDK(API 15)はインストール済み)
構築した環境
デバイス:
モデル番号:N03-E
Androidバージョン:4.0.4
Eclipse
Version: 4.2.1.v20120814-120134-9JF7BHVGFyMveli1uX6aTH0q-eAap6PAgOP5mO
Android Development Toolkit
Version: 21.0.0.v201210310015-519525
公式ページ : http://developer.android.com/tools/device.html
参考にしたページ : http://www.adakoda.com/android/000242.html
1.実機(Androidデバイス)側の設定
「設定」アプリを起動>「セキュリティ」>デバイス管理「提供元不明のアプリ」にチェック
「設定」アプリを起動>「開発者向けオプション」>「USBデバッグ」にチェック
2.PCと実機を接続
とりあえず、付属のUSBケーブルでPCとAndroidデバイスを接続
初めて接続したら、デバイスドライバが自動的インストール。。。では上手くはいかないので、
公式サイトからデバイスドライバをダウンロードして、インストール
N03-Eの場合は、以下からダウンロード
http://www.n-keitai.com/guide/download/n03e/usb/dl.html
・デバイスドライバがインストールできているか確認
→コマンドプロンプト上で、「adb devices」と叩いて、それっぽいデバイスが表示されているのでOK
→ 「デバイスマネージャー」でも、!アイコンとかついてないのでOK
3. デバッグしたいプロジェクトの AndroidManifest.xml にデバッグを有効にする記述を行う。
AndroidManifest.xmlの、タグの属性にandroid:debuggable=”true”と記述
※eclipse使っているなら、この手順は不要(eclipse IDEが自動で、デバッグを有効にしてくれるため。)
——————————————————————–
■上記手順で上手くできなかった。。。
「実行構成」の「ターゲット」タグで、Always promt to pick deviceを選択
Android Device Chooserを開く→「Choose a running Android Device」内で名前が点滅表示されてしまう
よく確認すると、「adb devices」を繰り返し実行すると、デバイスが表示されたり、表示されなかったりする。
■検索した結果
原因は不明
接続できたり、できなかったりを繰り返すので、
以下を参考にWi-Fi経由でadb接続するようにした。
http://www.adakoda.com/android/000541.html
http://komugi.net/archives/2010/08/22212755
=>apkのインストールできるが、デバッグができないっぽい
また、何度もUSB接続していると、「adb devices」で表示されるデバイスが
常時offlineになった。
■気になる情報
USB3.0のポートに接続しているのが問題かも
http://blog.livedoor.jp/moonlight_aska/archives/50690090.html
ただ、今使ってるPCが3.0のポートしかないので、すぐには試せれない。
=> USB2.0のポートで試しても、結局だめでした。
なんか知っている人がいたら、教えてほしい。。。
DayDream その2
http://developer.android.com/about/versions/android-4.2.html#Daydreamと、DreamServiceのソースコード見ながら作成。
AndroidManifest.xmlに以下を追加して、Serviceとして設定する。
<service android:name=".MyDream" android:exported="true"
android:icon="@drawable/dream_icon" android:label="@string/dream_label" >
<intent-filter>
<action android:name="android.service.dreams.DreamService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
name,icon,labelは適切に書き換えるなり、付け足すなりする。
DreamServiceのサブクラスとして、MyDreamクラスを実装する。
(Activityみたいに実装できると言っています)
独自のライフサイクルを持っていて、ユーザ勝手に起動できない。システムが決められたタイミングで起動させる。
以下のコールバックメソッドをオーバライドして、好きな処理を実装。
@Override
public void onAttachedToWindow() {
}
@Override
public void onDreamingStarted() {
}
@Override
public void onDreamingStopped() {
}
@Override
public void onDetachedFromWindow() {
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
onAttachechToWindow()を、例えば以下のように実装。
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
// Exit dream upon user touch
setInteractive(false);
// Hide system UI
setFullscreen(true);
// Set the dream layout
setContentView(R.layout.dream);
}
onCreate,onDestory()は、Serviceのインタフェース。
オーバーライドするときは、親メソッドを呼ぶようにする。
———————
詳しくはAPI Reference参照。
—————————————————–
■利用方法
・「設定」→「ディスプレイ」→「スリープ」を開き、スリープするまでの設定を短くする
・開発者向けオプションでスリープモードにしない(充電中に画面をスリープしない)をOFFにする
・「設定」→「ディスプレイ」→「スクリーンセーバー」にて、登録したServiceを設定
・スクリーンセーバー開始のタイミングを、「充電時」に設定すると勝手に起動するようになる
—————————————————-
■サンプル
http://sourceforge.jp/users/i07iwami/pf/android_workspace/scm/tree/master/DayDream/
以前作った○×ゲームをそのまま流用してスクリーンセーバー上に乗っけてみた。
Toastが上手く表示されないみたい。


