Skip to content
5月 25 13

Java8

by torn

・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に対応してるみたい

5月 25 13

IntelliJ IDEA

by torn

・Android Studioのベース
http://www.jetbrains.com/idea/

・詳しい説明あります
http://gihyo.jp/dev/serial/01/android_studio/0001

5月 21 13

Gradle

by torn

http://s.news.mynavi.jp/column/ide/153/index.html

http://slumbers99.blogspot.jp/2013/05/eclipse-gradle-android.html?m=1

5月 18 13

keystore

by torn

メモ
http://memo.pandako.com/?p=196

5月 18 13

Google I/O 2013

by torn

無題

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/

5月 18 13

Java 8 また延期

by torn

ご無沙汰でした。

もっと頻繁に更新しよと思うので、とりあえず興味のあった記事をピックアップしていきます。

・Java8また延期
http://www.infoq.com/jp/news/2013/05/Java_8_Delayed

2月 3 13

nxtOSEK 環境構築

by torn

以下のサイトを元に環境構築
http://www2.denshi.numazu-ct.ac.jp/lego/NXT/nxtOSEK/1_donyu/1_install.html#cygwin

※手順どおりにやればできる。GUN ARMのバージョンを間違えてしまうと、半日くらい嵌ることになるので注意

1月 26 13

lambda式 (続)

by torn

■例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型

1月 16 13

N-03E 実機デバッグ環境構築

by torn

実機デバック環境の構築手順忘れていたので、まとめる。
 (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のポートで試しても、結局だめでした。
   なんか知っている人がいたら、教えてほしい。。。

1月 9 13

DayDream その2

by torn

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が上手く表示されないみたい。