--/--/-- (--) スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 |


2011/10/13 (Thu) Androidプログラミング カメラアプリ制作中(2)

20111012-234441.png

 「続きを読む」で端末によって異なるカメラがサポートしている機能を、Cameraクラスのオブジェクトを生成してParameterを取得して一覧表示(上画面:GARAPAGOS 005SHの結果)するコード。実際にこれらの値を利用するには「List」に入れて拡張for文であらかじめ定義されている定数とマッチさせ、一致したものをAdapterなどに入れて一覧表示(前回の記事)させれば良い。そして選択された数値をCameraオブジェクトのParameterにセットする。

①各々の端末がサポートしている機能を調べる
②用意された定数と照合する条件文で一致した項目を設定項目として追加する
③ユーザーが選んだ設定項目をカメラのオブジェクトにセットする

※保存可能サイズだけは取得方法が他と異なり若干面倒になっています

【課題】ISO感度の取得は出来るんだけど、その設定を反映させる方法が分からない。検索しても見つけられない。デフォルトのカメラが設定できてるから、やれないはずは無いと思うんだけれども(現在APIレベル8で制作中。それがいけないのだろうか)。とりあえず「parameters.set("iso-values", "ISO100");」という形でやってみたんだけど、結果には反映されていない様子。ヘルプ><

【追記】解決しました。詳しくは「Androidプログラミング カメラアプリ制作中(3)」にて。

...続きを読む

プログラミング | trackback(0) | comment(0) |


2011/10/10 (Mon) Androidカメラアプリのアイデア募集中

20111010-224814.png

学校の自由制作(卒業制作)でカメラアプリを作ることになりました。
最終的な目標はアートフィルター・ドラマチックトーンを再現すること(笑)

未だカメラの基本的な機能の部分で試行錯誤段階ですので、
カメラアプリに対するアイデアや意見がありましたらお願いしますm

スキル的にほとんど実現できない可能性がありますが、
可能な限り頂いたアイデアは実現させるよう努力します。

下の続きを読むで設定用のアクティビティのコードの一部が表示されます。
端末ごとに異なるフォーカスモードの設定値を取得してスピナーに表示させるプログラムです。
選択項目を文字列で受け取りインテントでメインアクティビティに飛ばすという仕様になっています。
(解説は省きます。赤字の部分がカメラごとに異なる設定値を取得するコード)

...続きを読む

プログラミング | trackback(0) | comment(0) |


2011/08/29 (Mon) JAVAの識別子(変数名やフィールド名)を日本語で記述する

 JAVAのコードを書いていて、なんとなく変数名を日本語にしてみたら普通にコンパイルが通った。調べてみるとJAVAの識別子(identifier:変数名、クラス名、メソッド名などに使用)は「Unicodeの文字」であれば何でもOKとのこと。そこで日本語の識別子オンリーで記述したコードを書いてみた。違和感はあるけれど、慣れてしまえば変に長い変数名を付けるよりよっぽど分かりやすい気がする。
(下記プログラムを実行するとコンソールに「こんにちは」と表示される)

変数名:赤
メソッド名:青
クラス名:太字


public class 日本語変数テスト {
// 日本語変数の宣言
private static String 日本語;
public static void main(String[] args) {
// 「変数格納」クラスのオブジェクトを作成
変数格納 変格 = new 変数格納();
// 「変数を格納する」メソッドを呼び出し文字列を格納
変格.変数を格納する("こんにちは");
// 「変数を取得する」メソッドを呼び出しString型の変数に代入
日本語 = 変格.変数を取得する();
// コンソールに「こんにちは」が表示される
System.out.println(日本語);
}
}
class 変数格納{
private String 文字列;
// メソッド名や引数名も日本語で書ける
void 変数を格納する(String 文字列) {
this.文字列 = 文字列;
}
String 変数を取得する() {
return 文字列;
}
}

プログラミング | trackback(0) | comment(2) |


2011/08/12 (Fri) Androidプログラミング編 その3 レイアウトの定義(XMLとJavaコード)

20110812-002011.jpg

ボタンやテキストボックスといったAndroidの画面を構成するウィジェットは全て「android.view.View」を継承したクラスとして定義されています。よって全てのウィジェットはViewとして扱うことができます。

ウィジェットの定義方法は2通り。

XMLで定義する。
Javaコードで定義する。

基本的にXMLで定義する方が分かりやすいしコードもスッキリします。XMLの方がメンテナンスも容易です。ただし、XMLで記述したレイアウトファイルはコンパイル時に読み込まれるため、アプリケーション実行中に動的に画面レイアウトを変更したい場合はコードに直接書かなければなりません。

XMLで定義した場合

XMLファイル

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TextView" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
</LinearLayout>

Javaファイル

package com.kononushi.android.widget;

import android.app.Activity;
import android.os.Bundle;

public class WidgettestActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

①と同じ内容をJavaコードで定義した場合

package com.kononushi.android.widget;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class WidgettestActivity extends Activity {

//フィールド(レイアウトとウィジェット)
LinearLayout layout;
TextView tv;
Button b;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //リニアレイアウトを作成
        layout = new LinearLayout(this);

        //テキストビューを作成し文字列を格納
        tv = new TextView(this);
        tv.setText("TextView");

        //ボタンを作成し文字列を格納
        b = new Button(this);
        b.setText("Button");

        //ウィジェットが並ぶ方向を指定(垂直方向)
        layout.setOrientation(LinearLayout.VERTICAL);

        //レイアウトにウィジェットを格納
        //同時にウィジェットの属性(ここでは縦と横の長さ)を指定
        layout.addView(tv , new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT,
        LinearLayout.LayoutParams.WRAP_CONTENT));
        layout.addView(b , new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT,
        LinearLayout.LayoutParams.WRAP_CONTENT));

        //レイアウトを表示
        setContentView(layout);
    }
}

プログラミング | trackback(0) | comment(0) |


2011/08/10 (Wed) Androidプログラミング編 その2 前回のコードの解説+α

前回割愛したコードの解説をしていきます(誤りがありましたらご指摘願います><)。
AndroidプログラミングはJavaに比べると一見複雑そうに見えますが、
構造を理解すれば非常に合理的で分かりやすいプログラム構造になっています。

利用する文字列を列記した「string.xml」


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="kyoto">そうだ、京都行こう。</string>
    <string name="app_name">そうだ、京都行こう。</string>
</resources>

・「kyoto」「app_name」がJavaで云う変数名(識別子)。
・青文字で書いている「そうだ、京都行こう。」が格納したい文字列
・ここでは「app_name」はアプリケーションの名前として利用しています。



画面レイアウト(レイアウトとウィジェット)を記述した「main.xml」

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout //①
xmlns:android="http://schemas.android.com/apk/res/android"  //②
android:orientation="vertical" //③
android:layout_width="fill_parent" //④
android:layout_height="fill_parent"> //④
<TextView //①
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="30px" //⑤
android:text="@string/kyoto" /> //⑥
</LinearLayout>

凡例(属性の記述公式)
android:属性名="設定値"


リニアレイアウト(LinearLayout)というハコの中にテキストビュー(TextView)という文字列表示スペースが入るという構造。テキストビューはJavaアプレットのラベルのようなもの。テキストビューやボタンなどレイアウトに配置する要素を総称してウィジェットと呼ぶ。

決まり文句。Javaのインポートのようなイメージ。冒頭にこの一文を入れることで以下で説明する各種属性を簡単な記述で扱うことができるようになる。これを書かないとコンパイルが通らない。

orientation
・リニアレイアウトの属性
・設定値は「vertical」(垂直)か「horizontal」(水平)のどちらか。
・デフォルト値(何も設定しない場合)は「horizontal」。
・レイアウトの中に配置したウィジェットがどのように並ぶかを指定する。
・ここではウィジェットが一つなのでどちらを選んでも結果は変わらない。
・省略することが出来る。

layout_width & layout_height
・それぞれのウィジェット・レイアウトの高さと幅を指定する。
・設定値は「fill_parent」(画面一杯に広げる)か「wrap_content」(中身の大きさに合わせる)、もしくは具体的な数値(100pxなど)を入れる。
・省略することは出来ない。

textSizeはその名の通りテキストの大きさ。pxやptなどで指定する。

text
・そのウィジェットに表示するテキストを指定する。
・ここでは「string.xml」から「kyoto」という変数の文字列を呼び出している。
・文字列用xmlを使わず「android:text="そうだ、京都行こう。"」と書くことも出来る。



Javaコード「SodaKyotoIcoActivity.java」

package com.kononushi.android; //①

import android.app.Activity; //②
import android.os.Bundle; //②

public class SodaKyotoIcoActivity extends Activity { //②
public void onCreate(Bundle savedInstanceState) { //②③
super.onCreate(savedInstanceState); //②
setContentView(R.layout.main); //②④
}
}

パッケージ文。javaファイルが置かれている場所(フォルダ構造)示す。

AndroidアプリはActivityクラスかそのサブクラスを継承して作成する。これらのコードはAndroidアプリを作る上で必要最低限の要素なので、プロジェクトを作成する際に自動生成される。

javaアプレットのinit()メソッドのようなもの。アクティビティが呼ばれる(Androidアプリが起動する)と、必ずonCreate()メソッドが実行される。したがってアプリのレイアウトを呼び出すといった初期処理はこのメソッド内に記述しておく。

アクティビティクラスのsetContentView()メソッドでView(レイアウト)を呼び出す。ここでは「layout」フォルダに格納された「main.xml」(上で記述したもの)を呼び出している。


プログラミング | trackback(0) | comment(0) |


<< back | TOP | next >>

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。