問題タブ [android-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
604 参照

android-framework - Android アプリケーション フレームワーク

Androidアプリ開発初心者です。アプリがローカルデータストアからデータを保存/取得する従来のデータベース駆動型アプリを構築しようとしています。フレームワークを使い始めるのを手伝ってくれる人はいますか、または「これを行うサンプルアプリを教えてもらえますか?

0 投票する
1 に答える
1417 参照

android - JNI.cppファイルがAndroidのJavaフレームワークにイベントを送信する方法

MotionSensorsにリスナーを登録しました。これで、モーション変更メソッド「onSensorChange()」が呼び出されます。

私はこれらの呼び出しがSensorManager.javaクラスから開始することを知っています。これらのセンサー変更イベントがJNIからどのように発生するか、JNIが変更イベントをトリガーしてFramework(SensorManager.java)に送信する方法を知りたいです。

0 投票する
1 に答える
450 参照

android - Android2.3にスクリーンショット機能を追加する

Android 2.3のスクリーンショット機能を実装しています(ICSにはすでにスクリーンショット機能があることを知っています)。私はAndroidスクリーンショットライブラリ(略してASL)プロジェクトをベースとして使用しており、ニーズに合わせて変更しています。Androidのソースコードを自由に変更することもできます。目標は、Galaxy Noteのようなものにすることです。キーを押すコンボでスクリーンショットを撮ると、エディターが表示され、好きなように画像を変更できます。メイン画面で、アプリを使用しているときなど、どこでもスクリーンショットを撮ることができます。

現在、3つの作業部分があります。画面バッファーをキャプチャするネイティブバイナリ、ネイティブバイナリと通信してスクリーンショットを取得するサービス、およびエディターです。しかし、どうすれば3つのことを組み合わせることができるのかわかりません。ネイティブバイナリをAndroidのビルド済みパーツに追加し、init.rcを変更して、起動時にrootとして実行することができます(ただし、これを行う必要があります)。エディターは、Androidにも含めることができるシンプルなアプリです。しかし、私はまだサービスをどうするかを理解することができません。

理想的には、サービスをトリガーするキー押下コンボ(たとえば、電源ボタンと音量ダウン、または2つのフロントボタン)をキャプチャしたいと思います。次に、サービスはバイナリを呼び出してスクリーンショットを撮り、スクリーンショットを使用してエディターを開くインテントを起動します。しかし、私が知る限り、サービスはキーの押下をキャッチできません。また、スクリーンショットを撮るタイミングを知るためにサービスをどこかにバインドする必要があるので、Android自体を変更してサービスを開始し、起動時にバインドする必要があると思いますが、Androidのソースコードに関するドキュメントが不足していますどこから探し始めるのかわかりません。

Androidのどのコンポーネントがキーの押下を担当し、どこでサービスをバインドする必要があるかを誰かが知っていますか?私のアプローチはまったく可能ですか?

可能な限りの助けを事前に感謝します。

0 投票する
1 に答える
163 参照

android - AOSP: フォーカスできないが、LongClickable TextView

AOSP をダウンロードし、目的に合わせて TextView を変更しました。

単純なトーストを表示する TextView に LongClick リスナーを追加しました。

Android フレームワークを修正したので、すべてのアプリと Android OS 全体に反映されます。

TextView がいくつかの場所でフォーカスを取得し、他の基本的なウィジェットがフォーカスを取得しないという奇妙な問題に遭遇しました。これは多くの問題を引き起こしています。

例: 設定アプリで、「Wi-Fi」テキストにフォーカスがありますが、Wi-Fi リスト項目の空白の領域をクリックしないと、Wi-Fi 設定に入ることができません。(私は明確であることを願っています!)

別の例: Radio Button に対応するテキストがフォーカスを受け取るため、Radio Button を選択できません。

だから私の質問は:

  1. TextView をフォーカス不可にしてロングクリックイベントを受け取る方法はありますか?
  2. フォーカスを親レイアウトに渡す方法はありますか?
  3. あなたが提案できる他の方法はありますか?

(追伸: 私がやっていることの正しいとか間違っているとか言わないでください。これは、私が達成しようとしていることの実現可能性テストにすぎません。)

0 投票する
1 に答える
11095 参照

android - Android フレームワーク リソースをビルドする

オープン ソース リポジトリからカスタム Android イメージをビルドし、Android ベース フレームワーク コード内で変更を加えようとしています (リソースと Java コードの両方の変更)。システム全体をクリーンアップして再構築します。

それについての私の理解は、変更を加えた後にできることであり、それによってと Framework.jarmmm frameworks/baseが自動的に再構築されるということでした。framework-res.apkout/target/product/<my-config>/system/framework/

しかし、それmmm frameworks/baseは何もしないようです。mmm frameworks/base/core/resをコンパイルするには手動で行う必要がframework-res.apkあり、その後やり直しmmm frameworks/baseて JAR を再コンパイルします。

それは正常ですか?mmmFrameworks/base recompile everything? Plus, the/out/target/common/R/com/android/internal/R.javaが clobber を作成しないのはなぜfile that is used by Eclipse to locate the resources is never re-generated unless I do a wholeですか。which takes forever. How can I simply re-generate theR.java` ファイルを作成します。

追加の質問: いくつかのサードパーティの APK を ROM に追加したかったので、メインの mk スクリプトからインクルード/vendor/<vendor-name>/したファイルと共にそれらを配置しました。Android.mkapk は にコピーされますが、イメージ/out/target/product/<my-config>/system/appには含まれません。system.img何故ですか?

0 投票する
2 に答える
2564 参照

android - Androidコードのどこに電話の名前/モデル番号が保存されていますか?どのようにそこに保存されていますか?

私が知りたいのは、Android フォンがMTPとして接続されているときに、自分のコンピューターに表示されるように名前を公開する方法です。mtp /usbドライバーは、フレームワーク層のmtp/usb Java クラスなどの上位層から値を取得すると思います。Android コード自体を使用して、コンピューターに表示される名前を変更したいと考えています。

前もって感謝します。

0 投票する
1 に答える
1486 参照

android - Android で /data/sdcard のデフォルトのファイル/ディレクトリ権限を設定する

現在、Android のソースコードに必要な変更を加えることで、デバイスの 1 つに Android-gingerbread のカスタム ビルドを作成しています。

特定のパス (つまり、私の場合は /data/sdcard) の下に作成されるすべてのファイル/ディレクトリを常に rwxrwxrwx 権限を持つように設定する方法があるかどうか知りたいですか? サードパーティのアプリ マーケットをダウンロードしようとしたところ、/data/sdcard にカスタム ディレクトリが作成され、そこにアプリの apk がダウンロードされ、インストールが試行されることがわかったため、これが必要です。しかし、そのディレクトリと apk にアクセス許可があるため、これは失敗します。 rwx------ の場合、PackageInstaller がその apk にアクセスできなくなり、解析エラーが発生します。

ファイルのパーミッションを変更してアプリがインストールできることを確認しました!

誰かがこれで私を助けることができるかどうか教えてください.

ありがとう。

0 投票する
2 に答える
348 参照

android - onCreate、onPause、onResume などを呼び出すコードはどこにありますか

私の理解では、onCreate、onPause、onResume などはメイン UI スレッドで実行されます。これは、他のスレッド (Android フレームワーク コードの一部) がこれらの呼び出しをメッセージとして UI スレッドのキューにアタッチする場合に可能です。フレームワークのどのスレッド/プロセスとどのクラスがこれらのメッセージを UI スレッドのキューに添付するかを知りたいですか? 「myActivity.onPause」を実行する「handleMessage」関数が必要です。私はそれを見つけることができません。私の理解が間違っている場合は修正してください。

0 投票する
2 に答える
5408 参照

android - Android キー処理 (フレームワーク)

フレームワークのいくつかの部分は、まだ私にははっきりしていません。私は入力イベントの流れ (カーネル -> Eventhub -> InputReader -> InputDispatcher -> ...) でよく知られています。

状況

(要件: Android フレームワークを変更せずに入力キーを処理します。) デバイス (キーボード/ゲームパッド/コントローラー/...) からのキー イベントを処理したいのですが、いくつかの要件があります。1 つには、Android フレームワークを変更したくありません。これは、ホームキーが処理されている場所のWindowManagerPolicyように とその機能を拡張したくないことを意味します。interceptKeyBeforeDispatchingこれにより、キーイベントがアプリケーション層にディスパッチされますが、これは問題ありません。欠点は、ここで別のトリッキーな要件があることです。例: Angry Birds をプレイしていて、接続された入力デバイスの GoToAlpha ボタンを押すと、Alpha アプリケーションを開始する必要があります。Angry Birds は GoToAlpha がどのボタンなのか見当がつかず、それを処理/認識せず、たとえば Alpha アプリケーションを開始するためのインテントがブロードキャストされません。

質問

フォアグラウンドのアプリケーションがキーを処理できないことを知って、ディスパッチされた後に (カスタム) キー イベントを処理する方法はありますか?

私の(失敗した)解決策

  • 重要なイベントを処理するサービスを作成します。Angry Birds のようなアプリケーションがサービスにバインドされず、キー イベントがサービス内で捕捉されないため、これは不可能です。私が間違っている場合は、さらに情報を提供してください:)。

  • アプリケーションのアクティビティが独自の ActivityBase から継承できるようにする外部ライブラリを作成します。すべての重要なイベントとデフォルトの動作はここで処理できます。欠点として、既存のアプリケーションはライブラリを使用しないため、カスタム キー イベントをサポートしません。

  • フレームワークを拡張することは、私の目には最もクリーンなソリューションですが、それは私の要件を満たさない結果になります。

ヘルプや有用な情報をいただければ幸いです

追加

Intent最初の質問が何らかの方法で解決できた場合.. GoToAlpha ボタンの後ろをカスタマイズしたいと思います。つまり..デフォルトではアルファ アプリケーションが開始されますが、ユーザーがカスタマイズすると、ベータ アプリケーションが開始されます..何か考えはありますか?

ありがとう

0 投票する
2 に答える
344 参照

android - AndroidのDateFormatエラー

私が使用しているDateFormat.format("EEEE d MMMM", new Date())のは、アラビア語の場合、次のように表示されます:الثلاثاء29 ٥

誰かが特定のロケール(設定された)の数字でその29を取得する方法、または少なくとも現在のロケール設定を無視してすべてのロケールについてのみ英語で日付を表示する方法を教えてもらえますか?