問題タブ [surfaceholder]

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 に答える
1531 参照

android - タイプPUSH_BUFFERSのSurfaceView

の経験がありSurfaceViewます。不必要な再描画を防ぐために、私は常にカウントダウン変数を使用して、ビューを描画する頻度をスレッドに指示します。

しかし、それを「プッシュ面」に変更することを考えていました。したがって、バッファを表面にプッシュして、プロジェクトのどこにでもカウントダウン変数を設定する代わりに、それを示してください。

私の問題は、使用法が説明されている適切なチュートリアル/リソースが見つからないことです。現在、私はこのようなものを持っています:

ドキュメントに記載されているように、使用できないときにキャンバスを描画する方法がわかりませんlockCanvas()

0 投票する
0 に答える
1203 参照

android - ホームボタンを押した後、AndroidアプリがOpenGLコンテキストを維持するようにする

最初に少し背景を説明します。私は Android と iPhone の両方のプラットフォーム用のビデオ ゲームを開発しています。iPhone の仕組みでは、ユーザーがホーム ボタンを押して後でゲームに戻ると、ほとんどの場合、ゲームは一時中断することなく中断したところから再開します。すぐにレンダリングとゲーム ループに戻ります。これを iOS プラットフォームにセットアップするのは、私にとって非常に簡単でした。Androidでこれを達成すると、Googleの結果と何時間も格闘した後、私は激怒しました:P

私は iPhone と Android の両方に独自の OpenGL セットアップを使用しており、すべてがうまく機能しています。問題の根本は、OpenGL コンテキストを作成するために SurfaceHolder が必要なことだと思います。画面がゲームのフォーカスを失ったとき(つまり、ホームボタンが押されたとき)、AndroidはSurfaceViewクラスでsurfaceDestroyedを呼び出し、基本的にopenglコンテキストをKILLSします。surfaceCreated が呼び出されたときに、新しい SurfaceHolder を使用して新しいものを再作成できますが、その後、すべてのアート アセットをリロードする必要があり、達成しようとしているすべての目的が無効になります

どうにかして Android OS が Surface ホルダーを強制終了するのを防ぐことはできますか?これを機能させるために使用できるカスタム ビューはありますか? ここで私を助けることができるマニフェストにいくつかの設定がありますか (ほとんどのフラグを徹底的にテストしたので、それは疑わしいです) Angry Birds は Android OS 上でこれを完全に実行するため、これが可能であることはわかっています。

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

android - 2 つの MediaPlayer 間で VideoView を共有できない

RTSP ストリームを適切に再生するメインの MediaPlayer が 1 つあり、AsyncTask を使用して別のストリームのコンテンツをバッファリングしました。これを実現します。2番目のストリームに切り替えようとすると、ストリームが切り替わったことを聞くことができ、ラグはありませんが、音しか聞こえません。SurfaceHolder には VideoView が保持されており、準備ができているので、両方のメディア プレーヤーの Display として登録しました。ストリームを切り替えるとき、古い MediaPlayer を停止しますが、サーフェスは破壊されません。これは良いことですが、2 番目のビデオが表示されません。何か案は?

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

android - 1 つのアクティビティに 2 つの SurfaceHolders

1 つの RTSP ストリームを surfaceView で再生し、別のスレッドでもう 1 つの RTSP ストリームを準備したいと考えています。ただし、MediaPlayer は 2 つの SurfaceHolders をインスタンス化するときにエラーを出します。

Command PLAYER_PREPARE completed with an error or info PVMFErrResource

それにもかかわらず、ビデオはバッファリングされますが、それに切り替えると、オーディオのみが再生されます。Android ドキュメントでは、これは setDisplay(SurfaceHolder) を呼び出さないことの結果であると述べられていますが、これがエラーの原因です。ストリームショーのビデオ部分を作成する方法と、setDisplayを呼び出すときにエラーを回避する方法を知っている人はいますか? これはプラットフォームの制限ですか? ありがとう。

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

android - SurfaceHolder.lockCanvas を使用したライブ壁紙 (Rect dirty)

ここで 1 回か 2 回対処された問題についてお聞きしたいのですが、数日前に直面した問題を解決するのに役立つ情報は見つかりませんでした。

キャンバスを使用して Android 用のライブ壁紙を作成したい - OpenGL を必要とするほどグラフィカルに複雑ではありません。簡単にするために、無地の背景と 2 つの小さな長方形で構成されていると仮定します。描画は 3 つの段階で構成されます (シングル スレッド)。

  1. backgroundDraw() はキャンバス全体のロックを要求し、単色で描画します
  2. draw1() は部分的な (Rect r1) ロックを要求し、ロックされた四角形にのみ描画します
  3. draw2() は部分的な (Rect r2) ロックを要求し、ロックされた四角形にのみ描画します

複数の Android バージョン (エミュレーターとデバイスの両方) でテストしました: 2.1、2.2、2.3.3。後者でのみ正常に動作しているようです (ここ: http://home.elka.pw.edu.pl/~pgawron/include/Android/android_233.jpg )。以前の Android バージョンでは、SurfaceHolder.lockCanvas(Rect dirty) resizes(!) dirty がパラメーターとしてフルスクリーンのサイズに渡され、それを使用してさらに描画すると、画面全体に描画されます (ここでは: http://home.elka.pw.edu .pl/~pgawron/include/Android/android_22.jpg )。実際、各長方形がどのように正しく描画されていないか (全画面表示) を確認できます。画面全体の色が非常に速く変化します。

残念ながら、Google は lockCanvas(Rect dirty) の適切な使用例を見つけることができませんでした。以下に、テスト目的で使用される完全で唯一のクラスを添付します。Full Eclipse プロジェクトは、提供されたスクリーンショットが配置されている場所からアクセスできます。

誰かが最終的に私を助けてコードを修正できれば、非常に感謝しています(問題が私のコードにある場合のみ)。本当に無駄な時間を過ごしました。

ブラジル、

ペトレリ

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

android - カメラのプレビューが実行されているサーフェスの上に ImageView をスタックしますか?

カメラ プレビューが実行されているサーフェスの上に画像を表示しようとしています。これまでのところ、SurfaceHolder を使用してカメラを実行しています。FrameLayout を使用してカメラ プレビューの上に画像をスタックできるのではないかと考えましたが、その方法がわかりません。どうすればこれを行うことができますか、またはそれを行う他の方法はありますか?

私はプログラムでコーディングすることを好みますが、どんな助けも大歓迎です!

ありがとうございました

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

android - ボタンを押すことでxml定義のサーフェスビューを開始するにはどうすればよいですか?

別のチュートリアルの最初のコードをパターン化して、SurfaceViewへの描画を処理するクラスを作成しました。このチュートリアル(および私が見つけた他のチュートリアル)は、xmlで定義されたSurfaceViewを、アクティビティの作成時に開始するクラスに関連付けます。私の目標は、レイアウト内のボタンを押すとxmlで定義されたサーフェスビューでアニメーションを開始し、もう一度押すと終了することです。

さらに、アニメーションは、(表示全体ではなく)xmlで指定した領域内で実行する必要があります。

簡単にするために、現在、レイアウトを機能させる方法を理解するまで、サーフェスビューに円を描画しているだけです。

したがって、[移動]ボタン(BattleActivity :: onClick)をクリックすると、サーフェスビューが作成および描画されますが、ボタンを含むレイアウト内の他のコントロールをカバーするディスプレイ全体が表示されます。レイアウトの一部として定義されたサーフェスビュー(id = batchView)でのみアニメーションを実行したい。

これが私のXMLレイアウトコード(tabBattle.xml)のサブセクションです。

これが私の主な活動クラスです。これは、レイアウト(tabBattle)が存在するタブビューに移動したときに作成されます。Goボタンを押すとonClickが呼び出されます。onClickでの私の意図は、サーフェスビューを取得し、新しいBattleViewインスタンスを作成し、サーフェスビューコンテキストをBattleViewコンストラクターに渡すことです。これは明らかに正しくありませんが、他にこれを行う方法がわかりません。

public class BattleActivity extends Activityimplements View.OnClickListener {@Override public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.tabbattle); }

}

SurfaceViewサブクラス:

public class BattleView extends SurfaceViewimplements SurfaceHolder.Callback {private int circleRadius; プライベートペイントcirclePaint; UpdateThreadBattle updateThread;

}

おそらくお気づきかもしれませんが、私は一般的にandroidとjavaに不慣れです。どんな助けでも大歓迎です!

グレッグ

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

android - 独立したAndroidカメラアプリは機能しますが、カメラアプリのコードが別のアクティビティによって呼び出されると機能しません

私はシンプルなカメラ アプリ (SurfaceHolder を使用して、インターネットのさまざまなソースから) をプロトタイプとして作成し、後でより大きなプロジェクトに統合しました。

アプリは本当にうまく機能します。クラッシュせず、画像を適切に保存します。

私はそれをより大きなプロジェクトと統合し始めました。現在は、(メインのアクティビティではなく) 別のアクティビティから開始されています。期待どおりのカメラ ビューが表示され、クラッシュすることはありません。

ただし、撮影した写真は保存されません。

独立したカメラ アプリと統合されたカメラ アクティビティのコードは同じです。

私は、finish() を呼び出したり、他のアクティビティを開始したりせずに、統合されたカメラ コードをテストしました (画像が適切に出力されることを確認するためだけに)。

しかし、それでもうまくいきません。

誰もこれに遭遇しましたか?ありがとう。

これは、カメラ アクティビティのソース コードです。

}

更新:メインのアクティビティとカメラ ビュー アクティビティの 2 つのアクティビティのみを含む新しい Android プロジェクトを作成しました。メイン アクティビティは、ボタン クリックでカメラ ビュー アクティビティを起動するだけです。そして、まだ画像を保存しません。

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

android - SurfaceHolder.lockCanvas() takes too long for my game app

I'm developing an android game and I'm using SurfaceView. I have a method that will be called every 16ms (I want to have 60fps)

#xA;

When I run my app, the output from LogCat is:

#xA;

Why does the lock/unlock of canvas takes too much time? Are there any better approach to my problem? (that is, to have a 60 fps app)

Thanks!

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

android - AndroidSDKのSurfaceHolder.Callbackインターフェイスの問題

しばらく前にDroidXを入手してから、Android SDKを詳しく調べて、最近行動を起こしました。EclipseにADTプラグインをインストールし、Android SDK(Rev. 11)をダウンロードしてインストールし、いくつか試してみました。2Dグラフィックスは、私が仕事(組み込みシステム開発)で費やしているものとは大きく異なるため、試してみたかったのです。

ここでチュートリアルに従おうとしましたが、実装されている2つのインターフェイスでエラーが発生したため、ビルドできません。64ビットのWindows7マシンで2.3.3用にビルドしようとしています。以下のコードを含めますが、私は通常のJavaプログラマーではなく、明らかな何かが簡単に私を逃れる可能性があるという重要な警告があります。

Drawable Panel.java

ISurface.java

AndroidTutorial.java

DrawablePanel.javasurfaceChanged()、surfaceCreated()、およびsurfaceDestroyed()の定義で次のエラーが発生します。

onInitializeとの場合も同じonUpdateですAndroidTutorial.java。仕事で同じもの(SDKのバージョン10)をコピー/貼り付けできるので、エラーなしで迷子になります。何かご意見は?