夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

おひさしぶり~~~

お久しぶりです。


また、ほったらかしてました。

この頃精進に気が向きません(;・∀・)



で、しょうがないからAndroidのアプリ一本作ってみるかと思ってみたのですが・・・・


・・・・

・・・・・・え、え~と


わからない!!!!!!!!!!



基礎さえ忘れてしまったようですorz


ハイスタ頑張ります。とだけ言っときます、

昆布にて

こんちは〜

ってかおひさです(;´Д`)


相変わらずサブブログで狂ったように一日一問の過去問ログを残してますが・・・

こっちはほったらかしでしたねw


さて、今後ここ(昆布)で活動するにあたっての方針。。




ゲームをどうするか?
さて、昆布といえばゲーム制作です。

一応新参者ですが、ある程度のスキルを持っている以上つくらなければいけないのは確実。


もしかしたらAndroidアプリとして・・・みたいになるかもしれませんが、ゲームのネタがないw

あれかな・・・MiniRisやるか・・・でもまだテトリスアルゴリズムわかってませんwww

競技プログラミング
競技プログラミングTopCoderなどで練習をつんではいますが、なにしろ学校が学校なので、先輩にはIOI金メダリストとかが普通にいる状況です。

高2はもうすぐ出ていってしまって、なんかもしかしたら来年僕中心(あんまりそっちに興味ある高1がいない・・・)にパソコン甲子園とかでることになったりすると一度は経験しておきたいなという。。。


まぁあんまり気にしなくてもいいんですがww


というわけです(笑)

まぁ頑張っていこうと思います。

Androidのソースコード覗き(笑)

Androidソースコード覗くゾォ!!!!!!!!

…言い方悪いですが(笑)


とりあえずSDKの中身を探るのと、Android自体を探る二パターンを一挙ご紹介!

環境はUbuntu10.04です。



まずはSDKのコード(Activityのコードとか。)をEclipseでみる方法!

参考はこいつらだゼェw

なるべくSDKが入ってるフォルダにダウンロードしたほうが楽なのでそういう前提で。

コマンド
$ mkdir android/mysdk
$ cd android/mysdk
$ git clone git://android.git.kernel.org/platform/frameworks/base.git

ダウンロードはこれだけ。そしたらmysdk/base/core/javaにいろいろ入ってるんでコレを各SDKにコピーしちゃいます♪

$ mkdir android-sdk-linux_x86/platforms/android-3/sources
$ mkdir android-sdk-linux_x86/platforms/android-4/sources
... // すべてにsourcesフォルダをつくっておく。
$ cp -r mysdk/base/core/java/* android-sdk-linux_x86/platforms/android-3/sources/
... // これも全てに。

そしたらEclipseAndroidアプリのコードなんかでActivityに色がつくようにカーソルもってったらF3でActivity.javaが開くようになる。ほか同様。

すでにEclipse起動してた場合は一回再起動のこと。

さて、続いてはAndroid本体。

参考

さて、チョットやってみたのですが・・・

どうやらビルドは64bitでないとできない仕様になってるそうで。


というわけであとはチョット参考サイトの通りに。

64bitに移行するかちょっと考えてみてそれから続きをやりたいと思います。

Androidで音量設定

Android入門やめようかな←えぇぇぇぇ!!!???

今日も災害ったーv2からのAndroidTipsご紹介。


今回はコードからの音量設定のおはなしです。

いっぱい参考にしました。
http://sites.google.com/site/androidappzz/home/dev/volumesample
http://techbooster.jpn.org/device/1253/
http://duhkka.asasvata.net/2010/12/mediaplayer13-2.html
http://labs.techfirm.co.jp/android/k-matsuda/204
ただどれもシークバーでユーザーに設定させる方法だったので(;´Д`)


もうすこし単純に音量を扱いたい時の方法です。




まずAudioManagerというものを使うのでこんな感じでonCreateに記述。

AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

importはEclipseに任せましょう(笑)

ただし、ボタンなどの操作から使いたい場合は先にクラス直下に
private AudioManager audio;
とやっておいたほうがいいでしょうね。

さて、まずは最大音量の設定です。
とりあえず災害ったーから抜粋。

final int ALARM = audio.getStreamMaxVolume(AudioManager.STREAM_ALARM);
final int MUSIC = audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
final int NOTIFICATION = audio.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION);
final int RING = audio.getStreamMaxVolume(AudioManager.STREAM_RING);
final int SYSTEM = audio.getStreamMaxVolume(AudioManager.STREAM_SYSTEM);
final int VOICE = audio.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);

これで最大音量の数値を取ることができます。AudioManager.STREAM_*というのがいろんな音量を指定していて上から

  • アラーム音量
  • ミュージック音量
  • ステータスバーの通知音量
  • 着信の音量
  • システム音量
  • 通話音量
多分こんな感じ。
でgetStreamMaxVolumeメソッドで最大値を取得しています。

これでアラームを鳴らす際すべてを最大音量にするということをやったのが、こんな感じです。

Button.OnClickListener sAlarmListener = new Button.OnClickListener() {
public void onClick(View v) {
// 音量を最大に設定
final int ALARM = audio.getStreamMaxVolume(AudioManager.STREAM_ALARM);
final int MUSIC = audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
final int NOTIFICATION = audio.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION);
final int RING = audio.getStreamMaxVolume(AudioManager.STREAM_RING);
final int SYSTEM = audio.getStreamMaxVolume(AudioManager.STREAM_SYSTEM);
final int VOICE = audio.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
audio.setStreamVolume(AudioManager.STREAM_ALARM, ALARM, 0);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, MUSIC, 0);
audio.setStreamVolume(AudioManager.STREAM_NOTIFICATION, NOTIFICATION, 0);
audio.setStreamVolume(AudioManager.STREAM_RING, RING, 0);
audio.setStreamVolume(AudioManager.STREAM_SYSTEM, SYSTEM, 0);
audio.setStreamVolume(AudioManager.STREAM_VOICE_CALL, VOICE, 0);
// アラームを起動。ダイアログから位置情報を送れる。
aMp.setLooping(true);
aMp.start();
aAd.show();
}
};

このようにsetStreamVolumeメソッドで音量を設定します。
setStreamVolumeメソッドは第一引数に先ほど軽く説明した音量の種類、第二引数に音量の数値、で、第三引数でUIを変更できるのですが、これを応用してアラームの終了処理にすべての音量を0にしてユーザーにそれを操作させるということをやっています。こんな感じ

// アラームの終了処理
sAlarmBtn.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
aLm.removeUpdates(aLl);
aMp.pause();
// 音量を半分に設定。ユーザーに変えさせる
audio.setStreamVolume(AudioManager.STREAM_ALARM, 0, AudioManager.FLAG_SHOW_UI);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_SHOW_UI);
audio.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, AudioManager.FLAG_SHOW_UI);
audio.setStreamVolume(AudioManager.STREAM_RING, 0, AudioManager.FLAG_SHOW_UI);
audio.setStreamVolume(AudioManager.STREAM_SYSTEM, 0, AudioManager.FLAG_SHOW_UI);
audio.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 0, AudioManager.FLAG_SHOW_UI);
return true;
}
});

このように第三引数にAudioManager.FLAG_SHOW_UIを指定するとユーザーにToastで今の音量を知らせることができます。


今回は以上です。

最初の件ですが、もしかしたらこれからは入門というよりこういう記事をいっぱい書いて、あとAndroidアプリケーション技術者認定試験に向けてのまとめ記事などは書くかもしれません。


つまりほんとに入門編中止します。
楽しみにしてた方は申し訳ございませんでした。

Androidアプリ開発[基礎編]#2

こんにちは。

だいぶ間があきましたが…えぇ…

今塾どこに行くか迷っております。

T緑NG、さて、KS生のT大合格率が一番高い塾はどこでっか?

…(苦笑)


まぁとりあえず連載進めましょう。
ソースコードはやっぱ一部のみで。


本にのってたものなんでw


急激にめんどくさくなってきました。・・・あ、すいませんm(__)m

とりあえず音声読み上げアプリつくるそうです。えぇ。


File=>New=>Project=>Android Project !!!!!!


Project nameがHelloAndroidとか、ビルド対象(Build Target)がAndroid1.6、アプリケーション名はApplication nameもHelloAndroid、パッケージ名がcom.adamrocker.android.helloとかそんな感じで。アクティビティ名はHelloAndroidActivityみたいな。Min SDK Versionは4!!!

え〜と。解説です(;´Д`)

ここまでさらっと、めっちゃ適当にいってきたのはプロジェクトの作成方法です。

とりあえず最初のとおりに操作するとAndroid Projectの作成画面が登場します。


つぎにあるのがその設定の例ですね。
プロジェクト名というのは、Eclipseでのプロジェクトの名前です。

AndroidソースコードXMLファイルなどはすべてこの名前のフォルダに格納されます。
で、ビルド対象というのはそのアプリケーションを動かすAndroidのバージョンです。

また、そのアプリは指定したバージョン以上のAndroidでも動きます。

Application nameはそのアプリケーションの名前です。アイコンの下とかユーザーがこのアプリだと認識できるような固有名詞。

パッケージ名はJavaの独特の概念?ともかく自分のドメインを逆から読んだものなどが使われます。あんま気にしなくてもいいです。ただしかぶってしまうようなものはいけないそうです。


アクティビティ名はAndroidのアクティビティを継承するメソッドの名前です。慎重に命名とのこと。

最後のMin SDK VersionはAndroidのバージョンを判断する整数値です。Androidはマイナーアップデートを含めバージョンアップするたび1ずつそれを増やしていっています。Android1.6の場合は4なので4を指定しました。


以上でプロジェクトが自動的に生成されます。

ではまずxmlで画面を設計します。


android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

/res/layout/main.xmlをこういうふうに改変してみましょう。
まずLinearLayoutというのは基本的なレイアウトです。android:orientationでここではverticalを設定していますが、この場合は要素を縦に並べていき、ここをhorizontalと指定すると横並びになります。

それでは要素を見ていきましょう。
EditTextというのはテキストボックスのことです。

ユーザーがテキストを入力したりすることができる欄です。
まずid="@+id/text_et"とありますがコレはJavaソースコードからこの要素にアクセスするためのIDとなります。

あとでソースでご説明しますが、これは保存するとgenというフォルダにあるR.javaというところを見るとtext_etという要素が追加されてると思います。

さてさて、そしてlayout_widthとlayout_heightはその要素の横幅と縦幅を表します。

このコードのようにfill_parentやwrap_contentなどだけではなく320pxなど具体的な数値も指定できます。ちなみにwrap_contentはその要素が収まる最小の長さ、fill_parentはその上位の要素に収まりきる最大の長さとなります。

編集中・・・たぶんまた興味がもどるのを願って