昨日、jdkのインストール方法について書いたが、その後、eclipseを入れたら、下のように警告がでて、起動できない。

なぜかなーっと思っていたら、どうやらセキュリティ関連らしく、システム環境設定の「セキュリティとプライバシー」で、「このまま開く」というボタンを押せば起動できた。

2014/09/24
[mac os x][mavericks]eclipseが起動できない
2014/09/23
[mac os x][Mavericks]JDK6をインストール
何故か、MavericksでJava 6が発見できなかったので、インストールしてみることに。
で、方法は、jdk 6 on mountain lionを読みながらインストールを行った。
Downloads for Apple DevelopersページでJavaと検索する。
Java for OS X 2013-005 Developer Packageを選択して、java_for_os_x_2013005_dp__11m4609.dmgファイルをダウンロードする。
java_for_os_x_2013005_dp__11m4609.dmgをダブルクリックする。

JavaDeveloper.pkgをダブルクリックする。

「続ける」ボタンを押す

「続ける」ボタンを押す

「続ける」ボタンを押す

「同意する」ボタンを押す

「インストール」ボタンを押す

インストールされるまで待つ

「閉じる」ボタンを押してインストール完了。

インストールができたかどうかの確認は、ターミナルで
java -versionと打って
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)とでればおk
2014/09/11
[Android][Java]カメラで取得した画像を表示
前回、カメラを起動する方法を書きました。
で、その時は、サムネイルの表示だったのですが、今回は、とった写真をそのまま表示する方法について。
static final int REQUEST_IMAGE_CAPTURE = 1;
private Uri imageUri;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",Locale.US).format(new Date());
String mCurrentPhotoFileName = "JPEG_MEMO_" + timeStamp + "_";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, mCurrentPhotoFileName);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}上のプログラムでカメラを起動し、下のプログラムで画像を表示させます。if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
ImageView imageView = (ImageView) findViewById(R.id.imageview);
imageView.setImageURI(imageUri);
}問題は、端末を傾けてしまうと画像が表示されなくなってしまうこと。なので、この問題はまた改めて考えたい。
参考URL
インテントでカメラを呼び出す方法の補足(主に、Xperia 2.1問題対応)
2014/09/09
[Android][Java]カメラを起動する
プログラムからカメラを起動する方法をTaking Photos Simplyを読みながら実装してみた。
manifest.xmlに定義を追加
<manifest ... >
<uses-feature android:name="android.hardware.camera"
android:required="false" />
...
</manifest>強制的にカメラ機能が必要ではない場合は、falseを設定する。static final int REQUEST_IMAGE_CAPTURE = 1;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}上のプログラムをたたくと、カメラが起動する。@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
ImageView mImageView;
mImageView.setImageBitmap(imageBitmap);
}
}上のプログラムでサムネイルを取得することができる。ただ、撮った画像をそのまま掲載したい場合は、どうすればいいのだろうか?
今度、それについて調査していきたい。
2014/09/08
[Android][Java]SimpleCursorAdapterを使ったList View
前回、ArrayAdapterを使ったList Viewの表示方法について書きました。
で、今回は、SimpleCursorAdapterを使った表示方法について。
import android.widget.AdapterView;
import android.support.v4.widget.SimpleCursorAdapter;
ListView listView;
Cursor c = db.query(
/* ... */
);
String[] FROM = {TableName.ColumnName};
int[] TO = new int[] {android.R.id.text1};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1, c, FROM, TO,0);
listView.setAdapter(adapter);
上のように今回は、sqliteからデータを取得して表示する方法について書いたけど、めっちゃシンプル。2014/09/06
[Java][Android]ListViewのクリック処理について
前回、ListViewの表示方法について書きました。
で、ListViewをタップした時の処理をしたいのだが、どうすればいいのだろうか?
ListView listView;
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
}
});上のようにした結果、クリックイベントを取得することができた。参考
Android -ListView(イベント処理)-
Android - Populate listview using SimpleCursorAdapter (about to loose the will to live, lol)
2014/09/04
[Java][Android]Alertを表示する方法
アラートダイアログ(AlertDialog)を使用するにはを読みながらalertの表示方法を勉強する。
実際に組んだのは下のプログラム
import android.app.AlertDialog;
import android.content.DialogInterface;
//thisは、ActionBarActivityをextendしたクラス
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("エラー");
builder.setMessage("入力してください。");
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();実行したら確かにアラートが表示された。初めてのAndroid 第3版にも掲載されていなかったので、困っていたのだが、やり方がわかってほっとした。
オライリージャパン
売り上げランキング: 175,634
2014/09/03
[Java]クラス名.this.メソッドって?
androidの実装で調べごとをしていたら
hoge.this.bar();みたいな記述があって、これなんだろうなー?ってぐぐってたら、
(クラス名.this.メソッド)って・・・?っていう質問を発見して、自分の親に対するthisを呼び出すために
親class名.this.メソッド名();となっているようです。
なるほどなー。
2014/09/02
[Java]ジェネリック クラス
Androidのリファレンスを読んでいるとたまーに、
public ArrayAdapter (Context context, int resource, int textViewResourceId, List<T> objects)的な表記を目にするんだけど、そもそも<T>ってなに?
java Class<T>のTはどんな意味ですか???
で確認すると、動的に型を設定することができるみたいです。上のリンク先で紹介されているプログラムを書くと下のようになるみたい。
public class GenericClass <T> {
void disp(T msg) {
System.out.println(msg);
}
}で、Tの部分にStringを設定すると下のようになる。GenericClass <String> msg = new GenericClass <String>();
public class GenericClass <String> {
void disp(String msg) {
System.out.println(msg);
}
}Stringの部分をIntegerすると次のようになる。GenericClass <Integer> msg = new GenericClass <Integer>();
public class GenericClass <Integer> {
void disp(Integer msg) {
System.out.println(msg);
}
}これ、class設計が楽になるのかもしれないけど、可読性はどうなんだろうか?便利は便利なんだけどね。
2014/06/16
[android][Java]addPreferencesFromResourceのdeprecatedについて
オライリージャパン
売り上げランキング: 309,945
初めてのandroid第三版を読んでいて、下のような記述があるのですが、どうやら、addPreferencesFromResourceメソッドはdeprecatedされているようだ。
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Prefs extends PreferenceActivity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}public void addPreferencesFromResource (int preferencesResId)を読むと確かにそうなっているんだけど、代替手段はなんなのか、一切書かれていない。
この不親切さは何なんだ。
iOSのリファレンスなんて、deprecatedの場合、代替手段があって、ものすごく便利なのだが。
この辺の違いが、developer想いかどうかわかるんだよなー。
2014/06/15
[android][Java]匿名クラス
オライリージャパン
売り上げランキング: 309,945
今、初めてのandroid第三版を読んでいるのですが、そこで、下記のような記述がありました。
new DialogInterface.OnClickListener() {
}何これ??おそらくイベントリスナーをその場で実行していると思うんだけど、それにしても、確信が得られない。
で、
Java用語集:匿名クラス[無名クラス]
を読むと、匿名クラスと言って、名前がないクラスみたいですね。
これ便利なので、使い倒せるようにしたいなー。
きっと、これ使い続けるとクロージャーとかの話になってくると思うんだけど。
2014/06/09
[Android][Java]setContentView()メソッド
onCreateメソッドの一発目にある
setContentView(R.layout.activity_fullscreen);って何だろうって調べてみたら、何パターンかあるみたいなんだけど、下のが一番、しっくりきた。
引数にint型のパラメータを設定しており、単純にActivityにViewを設定するということですね!!Set the activity content from a layout resource. The resource will be inflated, adding all top-level views to the activity.
via:public void setContentView (int layoutResID)
2014/06/03
[Java][android][eclipse]プロジェクトの削除方法
今、androidの勉強をしているのですが、そもそもeclipseを使ったことがなくて、プロジェクトの削除の仕方がわからない。
そこで、適当にいじってみたら、下の図のようにPackage Explorerで削除したいプロジェクトの選択を行い、右クリックして、「Delete」するだけでよかった。

最初、フォルダから直接、削除していたんだけど、それじゃー、ちょっとまずいみたい。
勉強になりますね。
2014/06/01
[Java][Eclipse]エディタを分割する
秀丸みたいにEclipseでエディタを分割するにはどうすればいいのだろうか?
答えは簡単。
下のように「window」→「new editor」を選択すればおk

ドラッグすれば、縦分割することも可能です。
これは便利ですね。
2014/03/03
[Java][初めてのeclipse]クラスの作成
今回は、classの作成方法について
左上のアイコンをクリックしてclassを選択(下図参照)

次にクラス名を入力するんだけど、「public static void main」にもチェックを入れて作成

これも意外とあっさりできた。
2014/03/02
[Java][初めてのeclipse]プロジェクトの作成
今回は、エクリプス上でプロジェクトの作成方法について
左上のアイコンをクリックして「Java Project」を選択(下図参照)

次にプロジェクト名を入力(下図参照)

意外とあっさりできましたー。
2014/02/27
[Java][初めてのeclipse]スペース、tabを表示
「window」→「preference」→「General」→「Editors」→「Show line numbers」にチェックを入れてok

無茶苦茶醜いのですが、「Show whitespace characters」にチェックを入れておk
2014/02/26
[Java][初めてのeclipse]行番号を表示
どうやらデフォルトでは、行番号が表示されないようだ。
というわけで、表示方法について。
「window」→「preference」を選択

「General」→「Editors」→「Show line numbers」にチェックを入れてok

めちゃ簡単。
2014/02/25
[java][初めてのeclipse]perspectiveを開く
eclipseを立ち上げたら簡単なチュートリアルがあったので、それにそってちょっと使い方を学んでみる。
まずは、perspectiveを開いてみる。
と言ってもやり方はめちゃくちゃ簡単。
下のように「window」→「open perspective」→「Java」を選択すればおk

2014/02/24
[Java]エクリプスをダウンロード
ちょっと興味があって、Eclipseをインストールしてみた。
ダウンロードページで下のところからソフトをダウンロード。

Xcodeのようにインストールする必要がなく、解凍すればすぐに使えるから便利ー。
