約 4,728,483 件
https://w.atwiki.jp/android/pages/12.html
Androidって何? Androidは、オペレーティングシステム、ミドルウェアと鍵となるアプリケーションを含むモバイル端末のためのソフトウェアスタックです。 Android SDKのこの早めのリリースは、Javaプログラミング言語を使用しているAndroidプラットホームでアプリケーションを開発し始めるのに必要なツールとAPIを提供します。 特徴 コンポーネントの再利用と置き換えを可能にするアプリケーションフレームワーク モバイル端末に最適化したダルヴィーク(Dalvik)ヴァーチャルマシン オープンソース WebKit エンジンに基づく統合化されたブラウザー カスタム2Dグラフィックライブラリによる最適化されたグラフィックス 3DグラフィックはOpenGL ES 1.0の仕様準拠(ハードウェアアクセラレーションは任意) 構造化されたデータ領域のためのSQLite搭載 一般的なオーディオ、ビデオと静止画フォーマットをサポート(MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF) GSM通話(ハードウェア依存) Bluetooth、EDGE、3G、WiFiに対応(ハードウェア依存) カメラ、GPS、コンパス、加速度計(ハードウェア依存) リッチな開発環境、端末エミュレーター、デバッグ、メモリー、パフォーマンスのプロファイリングのツール、およびEclipse IDE用のプラグイン Androidのアーキテクチャ 以下は、Androidオペレーティングシステムの主要コンポーネント図です。各々のセクションの詳細は下記に続きます。 アプリケーション Androidは電子メールクライアント、SMSプログラム、カレンダー、地図、ブラウザー、コンタクト(アドレス帳)、その他を含む一組のコアアプリケーションを搭載します。すべてのアプリケーションは、Javaプログラミング言語を使用して記述されます。 アプリケーションフレームワーク 開発者はコアアプリケーションに用いられるものと同じフレームワークAPIへ完全にアクセスできます。 アプリケーションのアーキテクチャは、コンポーネントの再利用を単純化するように設計されています。 どのようなアプリケーションでもその能力を公開することができます。そして、他のどのアプリケーションからもそれらの能力(フレームワークによって実施されるセキュリティ制約に制限される)を利用するかもしれません。このようなメカニズムにより、ユーザーによるコンポーネントの入れ替えを可能にします。 すべてのアプリケーションは、以下のサービスとシステムによって成り立っています。 リスト、グリッド、テキストボックス、ボタンと組み込み可能ななウェブブラウザを含むアプリケーションを構築するのに用いることができる豊かで拡張可能なViews?のセット アプリケーションが他のアプリケーション(例えばアドレス帳)のデータにアクセスするか、彼ら自身のデータを共有することを可能にするContent Providers? Resource Manager?(ローカライズされた文字列、グラフィックスとレイアウトファイルのような非コード資源を提供する) すべてのアプリケーションがステータスバーでカスタムメイドのアラートを表示することを可能にするNotification Manager? アプリケーションのライフサイクルを管理して、共通のナビゲーション履歴を提供するActivity Manager? アプリケーションの詳細とウォークスルーについてはAndroidアプリケーションについて?を参照してください。 ライブラリ Androidは、Androidシステムの多様ななコンポーネントにより用いられるC/C++ライブラリのセットを含みます。 これらの能力は、Androidアプリケーションフレームワークを通して開発者に公開されます。 主なライブラリは以下の通りです。 システムCライブラリ 標準的なCシステムライブラリ(libc)。(組み込み向けLinuxベースのデバイスのために調整した)BSDから派生した実装です。 メディアライブラリ PacketVideo社のOpenCOREをベースにしています。ライブラリは、多くの一般的なオーディオとビデオ形式(MPEG4、H.264、MP3、AAC、AMR、JPGとPNGのような静止画を含む)の再生とレコーディングをサポートします。 Surface Manager 表示サブシステムへのアクセスを管理して、複数のアプリケーションからシームレスに2Dと3Dグラフィックレイヤーを合成します LibWebCore Androidブラウザーと組み込み可能なウェブ表示を可能にする最新のウェブブラウザエンジン SGL 下位層にある2Dグラフィックエンジン 3Dライブラリ OpenGL ES 1.0のAPIに準拠しています。ライブラリはハードウェア3Dアクセラレーション(ハードウェア依存)、あるいは標準装備の高度に最適化された3Dソフトウェアラスタライザーを使用します。 FreeType ビットマップとベクターフォントのレンダリング SQLite すべてのアプリケーションで利用可能な強力で軽量なリレーショナルデータベースエンジン Androidランタイム Androidは、Javaプログラミング言語のコアライブラリの機能の大部分を提供するコアライブラリを含んでいます。 あらゆるAndroidアプリケーションはDalvik VMのインスタンスをアプリケーション毎に生成することによって、独立したプロセスで動作します。 Dalvik VMはデバイスが効率的に複数のヴァーチャルマシンを走らせることができるように作られています。 Dalvik VMは、省メモリのために最適化されたDalvikで実行可能なフォーマット(.dex)を使用してファイルを実行します。 VMはレジスターに基づいた、Java言語コンパイラによってコンパイルされたクラスを付属の"dx"ツールを使用して.dexフォーマットに変換したものを実行します。 Dalvik VMは、Linuxカーネルの根底にある機能(例えばスレッディングと低レベルのメモリ管理)で成り立っています。 Linuxカーネル Androidは、Linux 2.6のコアシステムサービス(セキュリティ、メモリ管理、プロセス管理、ネットワークスタックとドライバーモデル)で成り立っています。また、カーネルはハードウェアと残りのソフトウェアスタックの間の抽象レイヤーの働きもしています。 次 → Androidことはじめ 戻る 原文
https://w.atwiki.jp/sevenlives/pages/1564.html
Linux Kernel? Hardware Abstraction Layer Androidランタイム? Java API フレームワーク? OHA? AIDL? Dalvik VM Androidランタイム? ART? アンドロイド・マーケット? Intent? Over The Air? ブラウザ(Android) Droid Font? Board Support Package? Trebleプロジェクト? Google Play? Android Studio? Android SDK? ■ アプリケーション・フレームワーク Activity Manager? Window Manager? Content Provider? Package Manager? View System? Resource Manager? Location Manager? Notification Manager? ■ Android UI Action Bar Activity(Android) Fragments(Android) Droid Font? Android 2.X? Android 3.X? Android 4.X Android Cupcake? Android Donut? Android Eclair? Android Froyo? Android Gingerbread? Android Honeycomb? Android Ice Cream Sandwich? Android Jelly Bean? Android KitKat? Android Lollipop? Android Marshmallow? Android Nougat? Android Oreo Google HAXM
https://w.atwiki.jp/internet-notes/pages/20.html
目次 Androidについて Download SET UP Hello World フィードバック 更新履歴 Androidについて http //developer.android.com/index.html http //www.atmarkit.co.jp/fjava/column/koyama/koyama09_1.html http //www29.atwiki.jp/android/ http //www.saturn.dti.ne.jp/~npaka/android/index.html Download http //developer.android.com/sdk/1.1_r1/index.html SET UP http //developer.android.com/sdk/1.1_r1/installing.html http //android.siprop.org/index.php?%CA%D9%B6%AF%B2%F1%2F%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%A5%AC%A5%A4%A5%C9 Hello World http //developer.android.com/guide/tutorials/hello-world.html フィードバック このページに関するコメントはこちらにお願いします。 名前 コメント 更新履歴 2009/03/21 ISE 新規作成 最終更新日時:2009年03月21日04時32分37秒
https://w.atwiki.jp/android/pages/34.html
なんでもかんでもAndroid情報検索してみたYahoo pipes rss なかなか更新されないので RSSへのリンク も貼っておきます。 大分ごみを減らしました。減らしすぎたかも・・・? キャッシュを消す方法はないんかなあ。。。 showrss プラグインエラー RSSが見つからないか、接続エラーです。
https://w.atwiki.jp/derax7/pages/18.html
Android クリックイベント Button start = (Button) findViewById(R.id.start); start.setOnClickListener(new OnClickListener() { public void onClick(View v) { //処理 } }); 状態保持 // ハイスコア読み込み SharedPreferences pref; pref = this.getSharedPreferences("PreferencesEx", Activity.MODE_PRIVATE); int stage = pref.getInt("stage", 0); // ハイスコアの書き込み pref = getContext().getSharedPreferences( "PreferencesEx", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putInt("stage", level); editor.commit(); isFinishing()で終了状態取得 isFinishing()を利用すると、Activityの終了状態を判別できる 画面遷移の種類 -Intentを飛ばした場合 false -ホームボタンを押した場合 false -戻るボタンを押した場合 true Androidで音を鳴らす。[SoundPool編] SoundPoolクラスの場合、基本は下記の3処理。 ①SoundPoolを new して、 ②音声ファイル読み込んで、 ③再生する SoundPool soundPool = new SoundPool(5,AudioManager.STREAM_MUSIC, 0); // ① int soundID = soundPool.load(context, R.raw.lalala, 1); // ② soundPool.play(soundID, 1.0F, 1.0F, 1, 0, 1.0F); // ③ 【①の補足】 public SoundPool (int maxStreams, int streamType, int srcQuality) 引数: maxStreams … このSoundPoolオブジェクトで同時に扱う音声(Stream)の最大数 streamType … 音声(stream)の種類。 AudioManagerクラスに定義されている srcQuality … サンプルレートの質。(現在はまだ未使用。 0 を使えとのこと) 返り値: 成功なら、SoundPoolオブジェクト 失敗なら、null 【②の補足】 音声ファイルは、res/raw/lalala.ogg に設置したという想定。ResourceIDは R.raw.lalala になる。ここから想像できると思うが、同フォルダに lalala.wav や lalala.mp3 を設置しても区別がつかない。 ちなみに、音声ファイルを安定再生するためには oggファイルが良いとのこと。 public int load (Context context, int resId, int priority) 引数: context … コンテキスト resId … 音声ファイルのリソースID priority … 優先度サンプルレートの質。(現在はまだ未使用。将来互換性のため 1 を使え) 返り値: sound ID (再生時に使用) 【③の補足】 public final int play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) 引数: soundID … load()メソッドで返される soundID leftVolume … 音量[左] (範囲:0.0~1.0) rightVolume … 音量[右] (範囲:0.0~1.0) priority … ストリーム優先度 (0 = 優先度最低) loop … ループの回数 (0 = ループ無し、-1 = 無限ループ) rate … 再生レート (1.0 = 標準の再生, 範囲:0.5~2.0) 返値 成功なら、streamID(≠0) 失敗なら、0 IntentへのExtra付加 intent.putExtra("hoge", String s); getIntent().getExtras().getString("hoge"); drawableからbitmap変換 Resources res = this.getResources(); // 画像の読み込み Bitmap bm = BitmapFactory.decodeResource(res, R.drawable.blue); Intent時のタスクについて マニフェストでアクティビティに以下のオプションを追加すると、シングルタスク(新タスクを別タスクとして記憶せず、自身に積み重ねる)モードになる。HOME画面等に設定。 android launchMode="singleTask" アイコンの作成 http //android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html Spinnerの初期値設定 spinner.setSelection(0); プログレスダイアログ progressDialog = new ProgressDialog(CoordinateActivity.this); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.setMessage("処理を実行中です..."); progressDialog.setCancelable(true); progressDialog.show(); (・・・処理・・・) progressDialog.dismiss(); ダイアログのカスタム OnCreateDialog(int id){・・・}内でレイアウト等の適用ができる。ダイアログ生成前に呼び出され、returnでダイアログを返してやる ボタンへのクリックリスナー追加 (Button)btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(GalleryActivity.this, Main.class); startActivity(intent); } }); エラー関連 以下のエラーがでた時はどうやらメモリリークっぽい。 端末再起動で直るけど、リーク箇所の特定をしたほうがよさそう Failed to install XXX.apk on device HT0B8RX02778 Too many open files 【View】子Viewの追加&削除 追加:view.addView(child); 削除;view.removeView(child); 全削除:view.removeAllViews(); カメラにIntentを飛ばして起動 // Intent for Camera Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(i, REQUEST_CODE_CAMERA); 保存先はExtraで指定 File tmpPict = new File(Environment.getExternalStorageDirectory(), "/hogehoge/" + System.currentTimeMillis() + ".jpg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tmpPict)); 結果をActivityResultで受け取り処理。 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_CAMERA) { 【View】layout.xmlの読み込み setContentView(R.layout.main); これは View v = this.getLayoutInflater().inflate(R.layout.main, null); setContentView(v) と置き換えられる(→addView()などに) 端末画面サイズ取得 WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); Log.d("display", "w " + display.getWidth()); Log.d("display", "h " + display.getHeight()); ロケールの取得 Locale locale = Locale.getDefault(); Log.v("ロケールは", locale.toString()); 以下のようにロケール別に分岐できる if (locale.equals(Locale.JAPAN)) { ・・・・・ } 画面遷移 intentを飛ばして画面遷移 Intent intent = new Intent(this.context, 遷移先.class); startActivity(intent); ※manifestへのactivityの追加を忘れないこと! 【View】idから呼び出し TextView textViewData = (TextView)findViewById(R.id.hoge); textViewData.setText("hogehoge"); onClick()内でのボタン選別 @Override public void onClick(View v) { switch (v.getId()) { case R.id.button_animation Intent intent = new Intent(this, Animation.class); startActivity(intent); break; case R.id.button_sub Intent intent2 = new Intent(this, Sub.class); startActivity(intent2); break; default break; } } SharedPreference云々 SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(this); Editor ed = SP.edit(); AdMob 最近仕様が変わったらしい AdMob導入の注意点 アニメーション private Handler myHandler = new Handler() { @Override public void handleMessage(Message msg) { if (isAttached) { // 移動処理 move(); // 再描画 invalidate(); sendEmptyMessageDelayed(0, DELAY_MILLIS); } } }; http //www.adamrocker.com/blog/181/android_animation.html
https://w.atwiki.jp/linuxjapanwiki/pages/74.html
Android ▲Androidロゴ Androidは、主にスマートフォンやタブレットなどの、タッチスクリーンモバイル機器向けに設計されている、Linuxカーネルやその他のオープンソースソフトウェアの改変版をベースとしたモバイルオペレーティングシステムである。 オープン・ハンドセット・アライアンスというコンソーシアムによって開発されており、主な貢献と商業的な販売はGoogleが担っている。 ▲ホーム画面 各種データ 開発者 Google LLC / オープン・ハンドセット・アライアンス /Android オープンソースプロジェクト (AOSP) 系統 Android 開発状況 開発中 初版 2008年9月23日 最新版 11 / 2020年9月8日 リポジトリ https //android.googlesource.com/ カーネル Linux ライセンス Apache License 2.0 , GNU GPL v2(カーネル)など ウェブサイト https //android.com/ 概要 Androidのコアとなるソースコードは、Androidオープンソースプロジェクト(AOSP)として知られており、主にApache Licenseの下でライセンスされている。 これによってサードパーティーによるカスタマイズが可能となり、ゲーム機、デジタルカメラ、PCなどの他の様々な電子機器向けに開発され、それぞれに特化したユーザーインターフェースを持つようになっている。 よく知られている派生製品には、テレビ用のAndroid TVやウェアラブル用のWear OSなどがあるが、これらはGoogleが開発したものである。 ソフトウェアの配布は、一般的にGoogle PlayストアやSamsung Galaxyストアのようなプロプライエタリなアプリケーションストア、またはAPK形式でソフトウェアパッケージを使用してAptoideやF-Droidのようなオープンソースのプラットフォームを介して提供されている。 Androidは、スマートフォンでは世界で最も売れているOSだが、国内ではiOSに続き2番目のシェア率となっている。 Androidには文字入力のためのIMEが搭載されていて、テキストを入力するところをタップすれば仮想キーボードが表示されるようになっている。 ただ、日本語入力用の仮想キーボードはデフォルトでは搭載されていない。日本語入力を有効にするにはサードパーティー製のIMEのインストールが必要になってくる。 Androidでは、Google Playという独自のアプリケーションインストーラが搭載されており、ユーザーはそこでアプリをインストールすることができる。 また、APKファイルから直接インストールすることもできる。ただ、Googleの認めていないアプリや悪質なアプリもあるため、注意が必要である。 リリース 主なリリースを以下に列挙する。(*1) 主なバージョン リリース日 API 2.3.3 – 2.3.7 2010年12月17日 10 4.0.3 – 4.0.4 2011年10月18日 15 4.1.x 2012年7月9日 16 4.2.x 2012年11月13日 17 4.3 2013年7月24日 18 4.4 2013年10月31日 19 5.0 2014年11月3日 21 5.1 2015年3月9日 22 6.0 2015年10月5日 23 7.0 2016年8月23日 24 7.1 2016年12月5日 25 8.0 2017年8月21日 26 8.1 2017年12月5日 27 9.0 2018年8月6日 28 10.0 2019年9月3日 29 派生OS ColorOS CyanogenMod AOKP Fire OS MIUI EMUI LeWa OS OmniROM Paranoid Android Replicant Indus OS LineageOS 外部リンク 公式ウェブサイト コメント欄 コメント欄の利用に関してはコメント欄の利用を参照して下さい。 本ページに無関係な内容のコメントは一律して削除されます。Wiki運営に関しては Wiki運営掲示板 にお願いします 。 投稿されているコメントへの返信の際は、必ず返信したいコメント横の○にチェックを入れて返信して下さい。 +上記の内容を守れる方のみご利用ください。 上記の内容を守れる方のみご利用ください。 コメントログ作成 - 名無しさん (2020-05-02 17 36 24) HarmonyOSもAndroidフォークと言われていますよね - 名無しさん (2021-06-14 21 30 53) ですね - Anonymous (2021-06-15 09 07 36) 名前 コメントログ
https://w.atwiki.jp/android/pages/43.html
チュートリアル:ノートパッドエクササイズ1 本エクササイズではシンプルなノートリストを作ります。このノートリストを使ってユーザは新規ノートを追加することができますが、ノートの編集を行うことはできません。本エクササイズでは以下の事項をデモンストレートします。 ListActivities の基本、メニューオプションの作成・操作の基本 SQLite データベース内のノートへのアクセス/保存方法 ArrayAdapter (ListView にバインドするためのもっともシンプルな方法の一つ)を用いてデータを ListView にバインドする方法 リストビューの配置の仕方やアクティビティメニューへのアイテムの追加のやり方、アクティビティがアクティビティメニューアイテムをどのように扱うか、といったスクリーンレイアウトの基本 [エクササイズ1?] [エクササイズ2?] [エクササイズ3?] [追加事項?] Step 1 Notepadv1 プロジェクトを開きます。 Notepadv1 は開始点として提供されるプロジェクトです - it takes care of some of the boilerplate work that you have already seen if you followed the Hello Android tutorial (すでにHello Android(もしもしアンドロイド)のチュートリアルで見ているかもしれませんが、共通する説明があります。) 2. browse ボタンを押し、あなたが本エクササイズをコピーしたフォルダを選択し、その中からNotepadv1を選んでOKを押してください。 a. Package Explorer で右クリックし、New- Project... を選択してください。 b. Android/Android Project を選択し、Next を押してください。 c. New Android Project のダイアログで、Create project from existing source(既存のソースからプロジェクトを作成)を選択してください. d. browse ボタンを押し、あなたが本エクササイズをコピーしたフォルダを選択し、その中からNotepadv1を選んでOKを押してください。 e. Project name 欄に Notepadv1、Location 欄に選択したパスが表示されることを確認してください。 f. Finish を押します。 g. 本エクササイズのプロジェクトが Eclipse の Package Explorer に開かれ準備が完了します。 h. もし AndroidManifest.xml にエラー表示が出ていたり、Android の zipファイルに関連する問題が表示された場合は、プロジェクトの上で右クリックし、ポップアップから、Android Tools- Fix Project Properties を選択してください。(プロジェクトがライブラリの場所を正しく見ていないので、この操作でそれを修復します。) Step 2 データへのアクセスと更新について このエクササイズにおいては、単にSQLiteデータベースを直接使ってデータを保存しますが、実際のアプリケーションでは正当なContentProviderを作成し、処理をカプセル化する方がずっと良いでしょう。 もし興味があれば、content provider やデータの保存/検索/表示などに関する情報をいろいろと見つけることが出来るでしょう。 DBHelper クラスを見てみてください - このクラスは、我々が作成するノートのデータを保持するとともにその更新も可能にする、SQLiteへのデータアクセスをカプセル化するために提供されています。 典型的にはContentProviderを用いることでこのクラスを実装します。そして実際、SDKには行っている完全なNotepadアプリケーションはそのようなContentProviderを実装しています。しかし、我々がこれからするように、単にSQLiteデータベースを直接利用していけない理由はありません。このクラスについて注意すべき重要なことは、それがSQLiteデータベースのデータの保存、参照、更新の詳細の面倒をみてくれるということです。全ての行を取得するメソッド、行IDに基づいて行を取得するメソッド、新しい行を作成するメソッド、既存の行を削除するメソッド、既存の行を更新するメソッドがあります。もしあなた自身のアプリケーションでSQLiteデータベースを利用する方法に関する入門を希望なら、このクラスを見てみるか、より良くは、ContentProviderの利用例として SDK の samples/ ディレクトリに入っている完全なNotepadアプリケーションを見てみてください。 Step 3 Layout と activity とについて ほとんどのActivityはそれに関連付けられたレイアウトを持っています。レイアウトはユーザに対してそのactivityの「顔」となります。今回の例では我々のレイアウトは画面全体を覆いノートの一覧を提供します。 しかし、フルスクリーンレイアウトはActivityにとっての唯一の選択肢ではありません。フローティングレイアウト(たとえばダイアログとか警告のように)が欲しいこともあるでしょうし、レイアウトを全く必要としないこともあるでしょう(使用するレイアウトを決めない場合、activityはユーザに見えなくなります)。 Open the notepad_list.xml file in res/layout and take a look at it This is a layout definition file with a default starting point in it, we have provided this as a convenience to get you going quickly. 1. All Android layout files must start with the XML header line ?xml version="1.0" encoding="utf-8"? . 2. Also, the next definition will often (but not always) be a layout definition of some kind, in this case a LinearLayout. 3. Note also that the xml namespace of Android should always be defined in the top level component or layout in the XML so that android tags can be used through the rest of the file xmlns android="http //schemas.android.com/apk/res/android" Step 4 We need to create the layout to hold our list. Add code inside of the LinearLayout tag so the whole file looks like this (you may have to hit the Source tab in order to edit the XML file) ?xml version="1.0" encoding="utf-8"? LinearLayout xmlns android="http //schemas.android.com/apk/res/android" android layout_width="wrap_content" android layout_height="wrap_content" ListView id="@id/android list" android layout_width="wrap_content" android layout_height="wrap_content"/ TextView id="@id/android empty" android layout_width="wrap_content" android layout_height="wrap_content" android text="@string/no_notes"/ /LinearLayout 1. The ListView and TextView can be thought as two alternative views, only one of which will be displayed at once. ListView will be used when there are notes to be shown, while the TextView (which has a default value of "No Notes Yet!" defined as a string resource, will be displayed if there aren't any notes to display). 2. The @ in the id strings of the ListView and TextView means that the XML parser should parse and expand the rest of the id string and use an ID resource. 3. And, the android list and android empty are IDs that are already provided for us by the Android platform, empty is used automatically when no data is provided in the list adapter. The List Adapter knows to look for these names specifically by default. Alternatively you could also choose to change the default empty view used by the List Adapter by using the setEmptyView(). More broadly, the android.R class is a set of predefined resources provided for you by the platform, while your project's R class is the set of resources your project has defined. Resources found in the android.R resource class can be used in the XML files by using the android name space prefix (as we see here). Step 5 Resources and the R class The folders under res/ in the Eclipse project are special. There is a specific structure to the folders and files under this folder. In particular, resources defined in these folders and files will have corresponding entries in the R class allowing them to be easily accessed and used from your application. Furthermore, they will be bundled and deployed as part of the application. To make a list view, we also need to define a view for each row in the list 1. Create a new file under res/layout called notes_row.xml. 2. Add the following contents (note again the xml header is used, and the first node defines the Android xml namespace) ?xml version="1.0" encoding="utf-8"? TextView id="@+id/text1" xmlns android="http //schemas.android.com/apk/res/android" android layout_width="wrap_content" android layout_height="wrap_content"/ 3. This is the view that will be used for each notes title row — it has only one text field in it. 4. In this case we create a new id called text1. The + after the @ in the id string indicates that the id should be automatically created if it does not already exist, so we are defining text1 on the fly and then using it. 5. After saving this file, open the R.java class in the project and look at it, you should see new definitions for notes_row and text1 (our new definitions) meaning we can now gain access to these from the our code. Step 6 Next, open the Notepadv1 class in the source. We are going to alter this class to become a list adapter and display our notes, and also allow us to add new notes Notepadv1 will be a subclass of Activity called a ListActivity, which has extra functionality to accommodate the kinds of things you might want to do with a list, for example displaying an arbitrary number of list items in rows on the screen, moving through the list items, and allowing them to be selected. Take a look through the existing code in Notepadv1 class. There are some constant definitions at the top, followed by a private field we will use to create numbered note titles, and some overrides of methods from the superclass. Step 7 Change the inheritance of Notepadv1 from Activity to ListActivity public class Notepadv1 extends ListActivity Note you will have to import ListActivity into the Notepadv1 class using Eclipse, ctrl-shift-O on Windows or Linux, or cmd-shift-O on the Mac (organize imports) will do this for you. Step 8 There are already three override methods defined onCreate, onCreateOptionsMenu and onOptionsItemSelected, we need to fill these out * onCreate() is called when the activity is started — it is a little like the "main" method for the activity. We use this to set up resources and state for the activity when it is running * onCreateOptionsMenu() is used to populate the menu for the activity. This is shown when the user hits the menu button, and has a list of options they can select (like "Create Note") * onOptionsItemSelected() is the other half of the menu equation, it is used to handle events generated from the menu (e.g. when the user selects the "Create Note" item). Step 9 Fill out the body of the onCreate() method. Here we will set the title for the activity (shown at the top of the screen), use the notepad_list layout we have created for the activity display contents, set up the DBHelper instance we will use to access notes data, then populate the list with the available note titles 1. call super() with the icicle parameter passed into our method 2. setContentView to R.layout.notepad_list 3. Create a new private class field called dbHelper of class DBHelper (before the onCreate method) 4. Back in the onCreate method, construct a DBHelper instance — assign to the dbHelper field (note, you must pass this into the constructor for DBHelper) 5. Finally, call a new method -fillData()- gets the data and populates it using the helper, we haven't defined it yet 6. onCreate() should now look like this @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.notepad_list); dbHelper = new DBHelper(this); fillData(); } And remember to add the DBHelper field definition (right under the noteNumber definition) private DBHelper dbHelper; Step 10 More on menus The notepad application we are constructing only scratches the surface with menus. You can also add shortcut keys for menu items, create submenus and even add menu items to other applications!. Fill out the body of the onCreateOptionsMenu() method. We are going to add just one menu item for now, "Add Item", using a string we will create in strings.xml, and defined with a constant we will create at the top of the class to identify the Add Item operation. 1. In strings.xml resource (under res/values), add a new string for menu_insert with text "Add Item" string name="menu_insert" Add Item /string , then save the file 2. Also, you need a menu position constant at the top of the Notepadv1 class (right under the KEY_BODY definition) public static final int INSERT_ID = Menu.FIRST; 3. In the onCreateOptionsMenu() method, add the menu item. Also take care of the result of the super call being returned. The whole method should now look like this @Override public boolean onCreateOptionsMenu(Menu menu) { boolean result = super.onCreateOptionsMenu(menu); menu.add(0, INSERT_ID, R.string.menu_insert); return result; } Step 11 Fill out the body of the onOptionsItemSelected() method This is going to handle our new "Add Note" menu item. When this is selected the onOptionsItemSelected() method will be called with the item.getId() set to INSERT_ID (the constant we used to identify the menu item). We can detect this, and take the appropriate actions 1. The super.onOptionsItemSelected(item) method call goes at the end of this method — we want to catch our events first! 2. Switch statement on item.getId() 3. case INSERT_ID 4. calls new method createNote() 5. break at the end of the case 6. return the result of the superclass onOptionsItemSelected() method at the end 7. The whole onOptionsItemSelect() method should now look like this @Override public boolean onOptionsItemSelected(Item item) { switch (item.getId()) { case INSERT_ID createNote(); break; } return super.onOptionsItemSelected(item); } Step 12 Add a new createNote() method In this first version of our application, createNote() is not going to be very useful. We will simply create a new note with a title assigned to it based on a counter ("Note 1", "Note 2"...) and with an empty body. At present we have no way of editing the contents of a note, so for now we will have to be content making one with some default values 1. String noteName = "Note " + noteNumber++; (Construct the name using "Note" and the counter we have defined in the class) 2. Call dbHelper.createRow() using noteName as the title and "" for the body 3. Call fillData() method again after adding (inefficient but simple) 4. The whole createNote() method should look like this private void createNote() { String noteName = "Note " + noteNumber++; dbHelper.createRow(noteName, ""); fillData(); } Step 13 List adapters Our example uses a very simple array adapter which binds an array or list of items into a ListView. More commonly in Android, List Adapters go hand in hand with ContentProviders, and this is also a very easy way to use lists. To bind a ContentProvider to a ListView you can use a android.widget.SimpleCursorAdapter to bind data from a ContentProvider into a ListView Define the fillData() method. This is fairly long This method uses ArrayAdapter, which is the simplest way of putting data into a ListView. ArrayAdapter takes either a List or an array of Strings, and binds them into a text view provided in the layout defined for the list row (this is the text1 field in our notes_row.xml layout). The method simply obtains a list of notes from the database helper, constructs a List of Strings using the title strings from each row, and then creates an ArrayAdapter out of those items and bound to use the notes_row we defined. private void fillData() { // We need a list of strings for the list items List String items = new ArrayList String (); // Get all of the rows from the database and create the item list List Row rows = dbHelper.fetchAllRows(); for (Row row rows) { items.add(row.title); } // Now create an array adapter and set it to display using our row ArrayAdapter String notes = new ArrayAdapter String (this, R.layout.notes_row, items); setListAdapter(notes); } 1. ArrayAdapter needs a List of Strings (List String ) containing the items to display 2. The data is read out of the database as rows, and the title field from each row is used to populate the list of strings 3. We specify the notes_row view we created as the receptacle for the data 4. If you get compiler errors about classes not being found, ctrl-shift-O or (cmd-shift-O on the mac) to organize imports. Note that for this exercise we use an ArrayAdapter, this is not a very scalable solution and more typically a SimpleCursorAdapter would be used with a ContentProvider or at least a Cursor returned from a query. See the sidebar on List Adapters for more information. Step 14 Run it! 1. Right click on the Notepadv1 project 2. From the popup menu, select Run As - Android Application 3. If you see a dialog come up, select Android Launcher as the way of running the application (you can also use the link near the top of the dialog to set this as your default for the workspace, this is recommended as it will stop the plugin from asking you this every time) 4. Add new notes by hitting the menu button and selecting Add Item from the menu Solution and Next Steps You can see the solution to this class in Notepadv1Solution from the zip file to compare with your own. Once you are ready, move on to Tutorial Exercise 2 to add the ability to create, edit and delete notes. Back to the Tutorial main page...
https://w.atwiki.jp/ohden/pages/343.html
repo 環境 Ubuntu 10.04 LTS server ※なんか上手く行かんかった...serverだからか? Ubuntu 10.10 desktop Androidのsourceをbuildする場合、LinuxまたはMacOSが必要。 Windows環境ではbuildできない。 Android open source project http //source.android.com/ http //source.android.com/source/download.html repoの導入 Android用のsourceを取得するためには、repoが必要。その導入方法を記述する。 pkgのinstall状況とか見やすいのでaptitudeを使用。apt-getでも普通に取得可能。 ツール・ライブラリのinstall repoを使うためには様々なツールやライブラリが必要なのでまずはその導入を行う。 pkg情報の更新。 $ sudo add-apt-repository "deb http //us.archive.ubuntu.com/ubuntu/ jaunty multiverse" $ sudo add-apt-repository "deb http //us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse" $ sudo aptitude update pkgの導入 $ sudo aptitude install sun-java6-jdk sun-java5-jdk git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev libreadline5-dev 一応、これで必要なものは全部入るハズじゃが、それぞれのツール、ライブラリについてメモ及び、検索とinstallコマンドを記述。 参考:aptitude search結果の見方 ■git-core 分散repositoryな構成管理を行う。 $ aptitude search git-core $ sudo aptitude install git-core ■gnupg 公開鍵暗号方式を用いてデータの暗号化やディジタル署名を行う。OpenPGP互換。PGP2と非互換。 $ aptitude search gnupg $ sudo aptitude install gnupg ■flex テキストから文字パターンを認識するものらしい。lexで検索した方が見つかりやすいかも。adobeのではない。 http //cis.k.hosei.ac.jp/~nakata/lectureCompiler/YaccLex/ $ aptitude search flex $ sudo aptitude install flex ■bison 汎用の構文解析器ジェネレータ。与えられた構文規則に従ってC言語で書かれた構文解析関数を出力してくれるらしい。 http //cis.k.hosei.ac.jp/~nakata/lectureCompiler/YaccLex/ $ aptitude search bison $ sudo aptitude install bison ■gperf 完全なハッシュ関数を生成する。 $ aptitude search gperf $ sudo aptitude install gperf ■libsdl-dev ゲームなどのマルチメディア関係のソフトウェアを開発するための、グラフィックやサウンド等のAPIを提供するライブラリ。 $ aptitude search libsdl-dev $ sudo aptitude install libsdl-dev ■libesd0-dev デジタル化された複数のオーディオを一つのデバイスで再生するめのライブラリ。 $ aptitude search libesd0-dev $ sudo aptitude install libesd0-dev ■libwxgtk2.6-dev ウィジットツールキット。GUIを構成するためのライブラリ。 $ aptitude search libwxgtk2.6-dev $ sudo aptitude install libwxgtk2.6-dev ■build-essential Debianパッケージの構築に必須であるとされるパッケージ。このパッケージを導入するとDebian構築に必要な依存関係にあるパッケージが色々入る。 $ aptitude search build-essential $ sudo aptitude install build-essential ■zip zipファイル用のアーカイバ。 $ aptitude search zip $ sudo aptitude install zip ■curl サーバからファイルを取得するためのクライアントプログラム。ダウンロード支援プログラム。 $ aptitude search curl $ sudo aptitude install curl ■libncurses5-dev TUI作成用のライブラリ。 $ aptitude search libncurses5-dev $ sudo aptitude install libncurses5-dev ■zlib1g-dev zip圧縮用ライブラリ。 $ aptitude search zlib1g-dev $ sudo aptitude install zlib1g-dev ■libreadline5-dev コマンドライン入力支援ライブラリ。bashでも採用されており、入力補完やコマンド履歴などを提供している。 $ aptitude search libreadline5-dev $ sudo aptitude install libreadline5-dev repoのinstall 手順に載ってるコマンドを順番に実行してみる。 $ mkdir ~/bin $ curl http //android.git.kernel.org/repo ~/bin/repo % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 17451 100 17451 0 0 3264 0 0 00 05 0 00 05 -- -- -- 17381 実行権を与えて、環境変数を追加して、適応。 $ chmod a+x ~/bin/repo $ vi .bashrc #repo PATH=~/bin $PATH $ source .bashrc ヘルプ出してみる。 $ repo help usage repo COMMAND [ARGS]repo is not yet installed. Use "repo init" to install it here.The most commonly used repo commands are init Install repo in the current working directoryhelp Display detailed help on a commandFor access to the full online help, install repo ("repo init"). ちゃんと出たらok。とりあえず、これで導入完了。 repoの使い方 初期設定 downloadしたいdirへ移動して、download対象を指定して、『repo sync』で実際にdownloadって感じの手順。 まず、dir作って、初期設定。 $ mkdir working-directory-name $ cd working-directory-name $ repo init -u git //android.git.kernel.org/platform/manifest.git server環境だとこんなん出て上手く動かんかった...(´;ω;`)ブワッ gpg symbol lookup error /usr/local/lib/libreadline.so.6 undefined symbol PCfatal registering repo maintainer keys failed desktop環境だと普通に上手く行った...orz 最後にいくつか質問されるが、『y』と『enter』押下で大丈夫なハズ。 clone_log 当該dirに『.repo』ってdirができてて、ちゃんと中身があればok。 sourceの取得 正確にはlocal環境とrepositoryの同期ですね。 $ repo sync で、実際にAndroid sourceの取得。空の状態から取得するとすっごい時間かかります。(ノД`) 終わったので、取得サイズを見てみる... $ du -sm 5175. MByte単位なので、diskの消費容量5GB... 取得対象の指定【-b】 取得brancheの指定。 『-b』オプションで取得するtag名、branche名を指定すると、そのtag、brancheのsourceが取得できる。 指定するtag名はこちらからhttp //android.git.kernel.org/?p=platform/manifest.git;a=tags $ repo init -u git //android.git.kernel.org/platform/manifest.git -b eclair .repo/manifests/ manifest switched gingerbread...froyo-plus-aosp.repo/manifests/ discarding 18 commits removed from upstreamYour Name [hoge] Your Email [hoge@hoge-VM.(none)] Your identity is hoge hoge@hoge-VM.(none) is this correct [y/n]? yrepo initialized in /home/hoge/working-directory-namehoge@hoge-VM ~/allmake_android で、取得。 $ repo sync この時点で、froyo(Android2.2)を取って来たかったんじゃが、どうもbrancheが無くなってるっぽぃ? eclair(Android2.1)の取得も失敗したし、branch名よりもtag名で取ってきた方が良いみたい。 e.g.) $ repo init -u git //android.git.kernel.org/platform/manifest.git -b android-cts-2.1_r4 並列処理の指定【-j】 sync時に並列で動かすjobの数を指定できる。 $ repo sync -j2 とかすると、2つのjobが同時に走るのでsyncにかかる時間を短縮できる。 数字なんぼまで増やせるんか知らんが、あんまし増やすとNetwork圧迫するので危険らしいが、正直とても遅いので、2~8位は設定しても良いと思う。 singleコアでも少しは意味あります。コア数+1位が妥当らしい。 manifestfileの指定【-m】 $ repo init -u git //android.git.kernel.org/platform/manifest.git -b eclair -m hoge.xml 初期設定時に作成されるマニフェストファイル名の指定。上記のコマンドだと、『hoge.xml』に、省略すると『default.xml』になる。 diff repositoryとの差異を表示する。 $ repo diff あんま上の方でやりすぎるとすっごい時間かかります。 よう分からんが、Makefile変更してdiffしても差異が出んかった。『init/init.c』いじってdiffやったら差異がちゃんと出た。 diff対象のfileって決まってる? まぁ、使い方はこんなとこかな?足りないトコとかは随時追加するつもり。 更新日: 2011年02月18日 (金) 19時32分10秒 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/shanghai_android/pages/13.html
Android、OPhone関連資料 ■2011年7月28日 第18回 日本Androidの会 東北支部発信会向け講演資料 中国のAndroid事情 ■OPhoneの概要と意義 第2回上海Androidの会 勉強会用資料(※PDFファイル、1.9MB) トップページ
https://w.atwiki.jp/nicoratch/pages/1493.html
概要 Android対応の無料ルーパー。15のDJ(Maztek, Nonames, Dj Delta, Stonic, Stoner Dottor Poison, Franky B, Jitzu, Dj Mate, Kun Kut, Dj Napalm, Nexus, Lower Bass, Sortek, Faxter Noise, Vas-T)が製作した17のビートを収録。 Nosheek Looper https //play.google.com/store/apps/details?id=air.NosheekLooper hl=ja