4

This simple code:

Camera.Parameters params = currentCamera.getParameters();
params.setPreviewFpsRange( 10000, 15000 );
currentCamera.setParameters( params );

does not work on my Nexus 4 (or my Motorola Atrix), despite the allowed values being between in the allowed range of 5000 to 120000.

When I try to use any min or max values different than 5000 and 120000, respectively, I get:

setPreviewFpsRange(const android::QCameraParameters&): error: FPS range 
value not supported

which is silly. Also, I tried this code on my older Motorola Atrix (which shows a valid fps range to be between 10000 and 30000) and it also doesn't work. Anything that can be done?

このトピックを検索したところ、a) このトピックに関する資料はほとんどなく、b) 一部のプラットフォームではこの機能がサポートされていない可能性があることがわかりました。ただし、Google の現在の主力携帯電話である Nexus 4 がサポートしていないのは少し奇妙です...

4

2 に答える 2

18

ああああ!そこで、答え探しの一環として、自分のアプリで Nexus 10 の動作を確認しました。getSupportedFpsRange 関数が返す値は、setPreviewFpsRange に入力できる正確なデュプルを表す範囲であり、他のデュプルはサポートされていないことがわかります (とにかく、私が知る限り)。

Nexus 10 が getSupportedFpsRange から複数のデュプルを返すため、これを発見しました。ここでは、3 つのデバイスの getSupportedFpsRange の戻り値を複製しました。

サポートされている範囲値の例

LG ネクサス 4:

preview-fps-range-values=(5000,120000);

モトローラ Atrix:

preview-fps-range-values=(10000,30000);

サムスン ネクサス 10:

preview-fps-range-values=(15000,15000),(24000,24000),(25000,25000),(15000,30000),(30000,30000);

結論

できない

params.setPreviewFpsRange( 29000, 29000 );

デバイスがすでにその二重をサポートしていない限り、プレビューを強制的に 29 fps にします。

もちろん、私がこの機能を調査していた最初の理由は、自分のアプリで Nexus 4 の滑らかなカメラ プレビューを複製することを望んでいました。これは、少なくとも Nexus 4 では setPreviewFpsRange が役に立たないことを決定的に証明しているようです。

探し続ける時間。(:

于 2013-04-22T02:02:53.737 に答える
-2

getSupportedPreviewFpsRange リストに (2000, 35000) のような 2fp から 35fps のサポートされている値のペアが 1 つしかない場合、その範囲内の任意の値を受け入れることがわかりました。

リストに複数のペアが含まれている場合は、そのうちの 1 つを使用する必要があります

List<int[]> fpsRange = param.getSupportedPreviewFpsRange();

if (fpsRange.size() == 1) {
    //fpsRange.get(0)[0] < CAMERA_PREVIEW_FPS < fpsRange.get(0)[1]
    param.setPreviewFpsRange(CAMERA_PREVIEW_FPS, CAMERA_PREVIEW_FPS);
} else {
    //pick first from list to limit framerate or last to maximize framerate
    param.setPreviewFpsRange(fpsRange.get(0)[0], fpsRange.get(0)[1]);
}
于 2015-07-09T11:19:14.177 に答える