サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
baroqueworksdev.hatenadiary.org
「S字カーブ理論」というものを聞いたことがありますか?技術進歩やプロダクト成長などに使われる言葉です。初期段階はなかなか成果でず時間が進みますが、続けることで急成長が見られます。最後は成熟していまい「これ以上は伸びない」という域に達します。 これを知らずに、「xx時間を費やしたのに、想定していた成長をしていない(と勝手に思い込む)」「自分には向いていないからやめよう」とか途中に諦めてしまう人が多いのではないかと思います。これは、自分が思い描いていた「期待する成長曲線」と「実際の成長曲線」のギャップです。自身でギャップを作り出し、それに苦しめられているだけです。 個人の学習・成長も同じ これは、個人の学習や成長にも同じことが言えると思います。 たとえば新しいプログラミング言語の学習を始めたとします。最初の頃は基礎的な文法や標準関数を覚えることから始めるでしょう。この時点ではまだ「作りたいもの
エンジニアリングマネージャー(=EM)の役割を持ちつつ、いちエンジニアとしても働くことが増えました。 EMの責務の一つとして、ピープルマネジメントがあります。 もう一年以上前?になりますが、カジュアル面談にこられたとある方から「EMの役割を担っている方のピープルマネジメントの話を聞きたい」とリクエストがありました。 事前に、次の項目をリストアップいただきました。 育成のベースとなる考え 育成者としてのプライド やらないようにしていること やるようにしていること その回答として、箇条書きにしたドキュメントをお渡し、それを見ながら意見交換を交えつつカジュアルにお話ししました。 ピープルマネジメントをする際、非常に重要なことであり、属する組織 / マネージャースタイルによって異なると思います。 ですが、私がマネジメントする際のベースとなる考え方はブレることはないので、公開してしまいます。 ちなみ
アプリケーション作成時に「NavigationBarが表示されている端末かどうか?」の判定が必要となった場合、どうすればいいか確認します。 以下のモジュールがFrameworks内にあります PhoneWindowManager#hasNavigationBar() WindoManagerService#hasNavigationBar() このモジュールを使用しているソースがあるかどうかチェック。 アプリケーションで使えそうなモジュールはViewConfigurationというクラス。 public class ViewConfiguration { private ViewConfiguration(Context context) { : if (!sHasPermanentMenuKeySet) { IWindowManager wm = Display.getWindowMan
頻繁にAOSPのrepo syncをする人におすすめ。 あと、作業現場にローカルLANにあると便利かも。 本家サイトに詳細が記載されています。 http://source.android.com/source/downloading.html ローカルミラーの作成方法 通常のrepo init と同じようですが、オプションで[--mirro]を指定。 $ mkdir -p /mirror $ cd /mirror $ repo init -u https://android.googlesource.com/mirror/manifest --mirror $ repo sync ダウンロード時間:約4時間強 (※AOSPの都合、ネットワークの込み具合によりスピードは変わります。) 容量:約10GB(※今後、どんどん増えていくと思います) ローカルミラーからソース取得 ローカルミラーからソ
AOSPの extarnal/gtest にGoogle Testが存在します。 MakeFileなどビルドに必要なファイルもAndroid用にカスタマイズされており、すぐに使用できる状態です。 今回は、このGoogle Testを使ってみようと思います。 サンプルプロジェクトをGoogle DocsにUploadしました。 ご参考に。 https://docs.google.com/open?id=0BwdCdBWuE_7cb2ZzVGt3eHhSOEtEbGVxNnRCSkFJdw 確認バージョン Android-4.0.3_r1 Google Test用Android.mk extarnal/gtest/test/Android.mkをもとに、アプリケーション用Android.mkを作成しました。 C++ソースとgtestを実行するソースは、 extarnal/gtestのサンプルコ
Android 4.x(Ice Cream Sandwich)はPhoneとTablet、両方のOSとして使用されます。 では、どこでPhone/Tabletの切り分けはどこで行っているか確認します。 Phone/Tabletの切り分け 起動処理中、以下の処理でFrameworks内のDisplaySizeを初期化します。 ServerThread#run() - WindowManagerService#displayReady - PhoneWindowManagerService#setInitialDisplaySize PhoneWindowManagerService#setInitialDisplaySizeのそれらしき処理があります。 // Determine whether the status bar can hide based on the size // of t
アプリケーション開発だけを行っていると、システム全体の表示レイヤーを意識しないと思います。 あらためて表示レイヤーの確認を行います。 確認OSバージョン Android OS 2.3 GingerBread レイヤーの宣言場所 各レイヤーの宣言場所はこちら。 \frameworks\policy\src\com\android\internal\policy\impl - PhoneWindowManager.java windowTypeToLayerLw()でwindowTypeから各レイヤー値に変換します。 値 レイヤー名 用途 2 WALLPAPER_LAYER 壁紙 2 APPLICATION_LAYER 一般アプリケーション 3 PHONE_LAYER 着信などの電話用 4 SEARCH_BAR_LAYER 検索バー 5 STATUS_BAR_PANEL_LAYER Statu
ナビゲーションアイコン マーケットアプリなどActionBarのアプリアイコン横に表示されているこれ。 タッチすると前画面に戻ったり、別の画面に遷移させることができます。 ナビゲーションアイコン使用方法 ナビゲーションアイコンはActionBarの機能の一つです。 ActionBarクラスのsetDisplayHomeAsUpEnabled()メソッドをコールすることで使用可能になります。 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } ナビゲ
アプリケーションからNavigationBarの表示指定が可能です。 ただし、Frameworks側から解除されるタイミングがあるので要注意です。 NavigationBarの表示指定が可能 アプリケーションから指定する方法は以下のViewクラスのsetSystemUiVisibility()をコールします。 http://developer.android.com/intl/ja/reference/android/view/View.html#setSystemUiVisibility%28int%29 手順はこんな感じ。 ViewにListenerを登録 View#setOnSystemUiVisibilityChangeListener 表示方法を指定 View#setSystemUiVisibility 指定できる表示方法 表示を薄くする View.SYSTEM_UI_FLAG_
gingerbreadのWindowManagerServiceの変更 gingerbreadのWindowManagerService.javaが大きく変更されています。 その一点は、InputManagerなるものが追加された影響があります。 今までJava層で行われていたEvent関連の処理がNative層に移行したため、 InputManagerクラスにて、入力系イベントのインターフェースが纏められています。 関連ファイル一覧 Java層 \frameworks\base\services\java\com\android\server WindowManagerService.ajava JNI層 \frameworks\base\services\jni com_android_server_InputManager.cpp Native層 \frameworks\base\l
ICSから変更されています。 これは注目すべき変更点です。 Phone/Tabletの切り分け PhoneWindowManagerService#setInitialDisplaySizeの処理を確認 // SystemUI (status bar) layout policy int shortSizeDp = shortSize * DisplayMetrics.DENSITY_DEFAULT / DisplayMetrics.DENSITY_DEVICE; if (shortSizeDp < 600) { // 0-599dp: "phone" UI with a separate status & navigation bar mHasSystemNavBar = false; mNavigationBarCanMove = true; } else if (shortSizeD
以下の記事でNavigationBarからGoogle Nowを起動するトリガーを発見しました。 Android 4.1で追加されたNAVIGATION_BAR_PANEL_LAYERについて http://d.hatena.ne.jp/baroqueworksdev/20120630/1341088267 今回はもう少し、調査してみます。 SearchPanelViewからGoogle Nowを起動する処理はこんな感じ。 \sources\android-16\com\android\systemui\SearchPanelView.java private void startAssistActivity() { // Close Recent Apps if needed mBar.animateCollapse(CommandQueue.FLAG_EXCLUDE_SEARCH_PA
Tablet UIモードの際、画面一番下に表示されるSystemBarです。(NavigationBarではありません) SystemBarの表示指定が可能 アプリケーションから指定する方法は以下のViewクラスのsetSystemUiVisibility()をコールします。 http://developer.android.com/intl/ja/reference/android/view/View.html#setSystemUiVisibility%28int%29 手順はこんな感じ。 ViewにListenerを登録 View#setOnSystemUiVisibilityChangeListener 表示方法を指定 View#setSystemUiVisibility 指定できる表示方法 表示を薄くする View.SYSTEM_UI_FLAG_LOW_PROFILE Table
AOSPにandroid-4.0.4_r1.1が現れました。 android-4.0.3_r1とのdiffとlogの取得を行いました。 diffの取得 ファイル差分すべてを取得 $ repo forall -p -c git diff android-4.0.3_r1..android-4.0.4_r1.1 > diff_android-4.0.3_r1_android-4.0.4_r1.1.txt変更されたファイルの一覧と変更行数を取得 $ repo forall -p -c git diff --stat android-4.0.3_r1..android-4.0.4_r1.1 > diff_android-4.0.3_r1_android-4.0.4_r1.1_stat.txt ディレクトリ毎の変更量(%)を取得 $ repo forall -p -c git diff --dirs
Android SDKのAPI 16が公開されました。 一緒にソースもDLできるので、毎度おなじみの表示レイヤーのチェックを行いました。 確認OSバージョン Android OS 4.1 JB 表示レイヤー OSのメジャーアップデートなので、表示レイヤーの変更点があるかどうか確認しました。 ソース SDK\sources\android-16\com\android\internal\policy\impl - PhoneWindowManager.java (★ = JBにて新規追加されたレイヤー) 値 レイヤー名 用途 2 WALLPAPER_LAYER 壁紙 2 APPLICATION_LAYER 一般アプリケーション 3 PHONE_LAYER 着信などの電話用 4 SEARCH_BAR_LAYER 検索バー 5 SYSTEM_DIALOG_LAYER 電源OFFダイアログなど 6
Switch widget ICSのSettingsアプリ内『Wi-Fi設定のON/OFF』や『Bluetooth設定のON/OFF』に用いられているUI部品です。 APIレベル14から使用可能。 http://developer.android.com/intl/ja/reference/android/widget/Switch.html Layoutの指定 Layoutファイルの指定方法 <Switch android:id="@+id/switchToggle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="SwitchTest" /> Switchのトグル操作をハンドリング Switch.classのsetOnCheckedChangeListener(
呼び出し方法 APIレベル9よりSettingsクラスに追加された「ACTION_APPLICATION_DETAILS_SETTINGS」。 android-4.0.X_r1以降、Settingsアプリ自体がFragmentでリファクタリングされており、使用方法を見直してみました。 Fragmentから以下のように、アプリケーション詳細画面を呼び出してみました。 public class MyFragment extends Fragment { : : startActivityForResult(new Intent("android.settings.APPLICATION_DETAILS_SETTINGS", Uri.parse("package:" + adapter.getItemPackageName(position) )) ,0); : : Settingsのソースを確
今回から確認OSバージョンをAndroid OS 4.0.1_r1に変更しました。 確認OSバージョン Android OS 4.0.1_r1 ICS スクリーンショット ICSから端末単体でスクリーンショットが撮れるようになりました。 とりあえず、frameworks内の確認!! スクリーンショットが実行されるまでの流れ Native層のInputDispatcherからinterceptKeyBeforeQueueingをコール 一旦、Java層にコールバック InputManagerを経てPhoneWindowManager#interceptKeyBeforeQueueing interceptKeyBeforeQueueing interceptScreenshotChord() mScreenshotChordLongPress#run takeScreenshot() Sys
NavigationBar ICSから追加された、画面下にある仮想キーのことです。 Developerサイトには「Virtual buttons in the System Bar」と記載されていますが、ソースコード中にNavigationBarと書かれています。 NavigationBarの実装方法 NavigationBarはSystemUI/StatusBarの一部として実装されています。 以下の説明を読んでいただくとご理解いただけると思いますが、ただのViewです。 \frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone - PhoneStatusBar.java try { boolean showNav = mWindowManager.hasNavigationBar(); if
設定のアプリ一覧からプリインストールの無効化ができます。 ただし、すべてのプリインストールが無効にできるわけではありません。 以下のソースを確認。 packages\apps\Settings\src\com\android\settings\applications InstalledAppDetails.java private void initUninstallButtons() { mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0; boolean enabled = true; if (mUpdatedSysApp) { mUninstallButton.setText(R.string.app_factory_reset); } else { if ((
手元にICOCA(=Felicaカード)しかなかったので、NfcFタグを受け取ってみました。 には"android.nfc.action.TECH_DISCOVERED"を指定しました。 <intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED"/> </intent-filter> <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter" /> Tagデータの取得 Activity起動後、getIntent()するとアクション:android.nfc.action.TECH_DISCOVEREDのIntentを取得することができます。 Extraデータに入って
健康に関して、2つの記事を書いた。今回は3つ目になる。外部カウンセラーとの面談が、今年最後だったのでそれも含めて、雑多に書いてみる。 どうやれば平常時への移行ができるか 前回の記事で、体と心が高揚状態から回復し、平常状態へと戻る過程は「健全な状態に移行中で自然な過程である」と書いた。では、実際にどういうことをすれば、さらに良くなるか。 アドレナリンとドーパミンの話をしたので、自然とセロトニンの話しになる。 どうすれば、セロトニンの分泌?につながるかというと、リズムを刻むのがよい。早い話、日にあたりウォーキングをするのが良いとのこと。うむ、わかる。 忙しくなる前にやっていたこと 忙しくなる前は、継続するためにドラクエウォークのレベリングをやりつつ、週末に1時間弱歩くようにしていた。ここ2ヶ月ほどは、寒くなってきた + 身体的な疲労で億劫になっており、ウォーキングをする頻度が低下してしまった。
Kazzzさんが公開されている nfc-felica http://code.google.com/p/nfc-felica/ をカスタマイズして入退場記録を表示してみました。 入退場記録のフォーマット 以下のサイトを参考にしました。 http://jennychan.web.fc2.com/format/suica.html#108F カスタマイズ箇所 ・入退場記録クラスをSuica.javaに追加 public static class Inout { final byte[] data; Context context; /** * コンストラクタ * @param data データのバイト列(16バイト)をセット * @param context androidコンテキストをセット */ public Inout(byte[] data, Context context) { th
アプリケーションで使用するHeapサイズを拡大する APIレベル11(ハニカム)からアプリケーションで使用するHeapサイズを拡大できるらしい。 デベロッパーサイトに以下のような記載があります。 Return the approximate per-application memory class of the current device when an application is running with a large heap. This is the space available for memory-intensive applications; most applications should not need this amount of memory, and should instead stay with the getMemoryClass() limit. T
確認OSバージョン Android OS 2.3 GingerBread NFCManagerの役割り NfcAdapterのHelperを提供 NfcAdapter Tagディスパッチを要求に使用するIntentの定義 フォアグラウンドでのTagディスパッチとフォアグランドでのNDEFプッシュ用の登録メソッドを提供 現在、フォアグラウンドNDEFプッシュはピアツーピアのみのサポート NfcService intent-filterのActionが"android.nfc.action.TECH_DISCOVERED"のActivityへTagを配信 アプリケーションPackage『com.android.nfc』を確認中。 (作成中) NFC規格一覧 android.nfc.techパッケージにNFCの規格に順じたクラスが存在します。 クラス名 規格名 備考 NfcA NFC-A (IS
はじめに 確認端末 Nexus S Motorola Xoom Android Frameworksへの入力イベント通知 タッチイベントやキーイベントなどのInput Deviceは「/dev/input/eventX」に書き込まれ、 frameworks(Native層)のモジュールで読み取り、Java層へ通知します。 ファイル名 \frameworks\libs\ui\EventHub.cpp Input Deviceの種類を確認する さて、端末がどのようなInput Deviceを監視しているのか確認します。 確認方法は「adb shell」のコマンドを使用します。 以下のようなコマンドを入力してみましょう。 adb shell ls dev/input 確認結果 Nexus Sの場合 $ ls dev/input/ ls dev/input/ event6 event5 event
アプリケーション開発で何気なく使っているFrameworks層のAPI。 ちょっとだけ掘り下げて、Frameworksを確認してみる。 確認OSバージョン Android OS 2.3 GingerBread PackageManagerの役割り 現在デバイスにインストールされているアプリケーションのパッケージに関連する、さまざまな情報を取得するためのクラス。 PackageManagerServiceの役割り system/app/ (=プリインストールapk)を読み込む data/data/ (=ダウンロードしたapk)を読み込む SDカードと端末間のパッケージ移動 パッケージ情報の管理 端末がサポートしている機能(Features)情報の管理 役割りが多い分、インナークラスも多いですね。 できれば、もっと機能ごとにファイル分割して欲しいなぁっと思ってみたり。 Activityからの使
NotificationにカスタムRemoteViewsをセット NotificationManagerに登録するオブジェクト・Notificationを次のようにすると、カスタムLayoutを表示することができます。 NotificationManager notificationManager = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.icon, context.getString(R.string.app_name), 0); notification.contentView = new RemoteViews(context.getPackageName()
次のページ
このページを最初にブックマークしてみませんか?
『baroqueworksdevの日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く