Что такое данные о глубине от камеры, как Kinect или Realsense?

Для этого требуется Lollipop (v5.0 / API 21) или выше, и он может только обнаруживать клавиши громкости

. Он отменяет действие клавиши громкости, поэтому использование его по всему миру может быть нежелательным.

public class VolumeKeyController {

    private MediaSessionCompat mMediaSession;
    private final Context mContext;

    public VolumeKeyController(Context context) {
        mContext = context;
    }

    private void createMediaSession() {
        mMediaSession = new MediaSessionCompat(mContext, KeyUtil.log);

        mMediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
                MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
        mMediaSession.setPlaybackState(new Builder()
                .setState(PlaybackStateCompat.STATE_PLAYING, 0, 0)
                .build());
        mMediaSession.setPlaybackToRemote(getVolumeProvider());
        mMediaSession.setActive(true);
    }

    private VolumeProviderCompat getVolumeProvider() {
        final AudioManager audio = mContext.getSystemService(Context.AUDIO_SERVICE);

        int STREAM_TYPE = AudioManager.STREAM_MUSIC;
        int currentVolume = audio.getStreamVolume(STREAM_TYPE);
        int maxVolume = audio.getStreamMaxVolume(STREAM_TYPE);
        final int VOLUME_UP = 1;
        final int VOLUME_DOWN = -1;

        return new VolumeProviderCompat(VolumeProviderCompat.VOLUME_CONTROL_RELATIVE, maxVolume, currentVolume) {
            @Override
            public void onAdjustVolume(int direction) {
                // Up = 1, Down = -1, Release = 0
                // Replace with your action, if you don't want to adjust system volume
                if (direction == VOLUME_UP) {
                    audio.adjustStreamVolume(STREAM_TYPE,
                            AudioManager.ADJUST_RAISE, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
                }
                else if (direction == VOLUME_DOWN) {
                    audio.adjustStreamVolume(STREAM_TYPE,
                            AudioManager.ADJUST_LOWER, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
                }
                setCurrentVolume(audio.getStreamVolume(STREAM_TYPE));
            }
        };
    }

    // Call when control needed, add a call to constructor if needed immediately
    public void setActive(boolean active) {
        if (mMediaSession != null) {
            mMediaSession.setActive(active);
            return;
        }
        createMediaSession();
    }

    // Call from Service's onDestroy method
    public void destroy() {
        if (mMediaSession != null) {
            mMediaSession.release();
        }
    }
}
-1
задан golu 18 March 2019 в 23:56
поделиться

1 ответ

Я полагаю, что потребуется полная книга, чтобы объяснить все подробно. Так что лучше почитай один. Для начала, может быть, я могу дать вам несколько советов.

1) Это все данные о глубине? Pixel (x, y) - расстояние в мм. Или есть что-то более глубокое для данных.

Да, это все. Если у вас есть расстояния с единицами измерения или просто какое-то значение датчика, зависит от вашего датчика глубины и от того, есть ли какой-либо шаг калибровки.

2) Как данные глубины представляются в файле

Обычно в виде последовательности значений. Если информация о глубине является двухмерной, у вас обычно есть карта глубины, которая в основном представляет собой цифровое изображение. Вместо яркости или цветовой информации у вас есть расстояния. Это слишком широкий вопрос, чтобы на него можно было ответить.

3) Для чего все это можно использовать?

Для всего, что использует информацию о глубине. Это слишком широко, чтобы ответить.

4) Как наиболее эффективно сохранить эти данные в файл

Это будет зависеть от вашего разрешения по глубине и многих других факторов, например, если вы хотите сохранить яркость или цвет также. Это слишком широко, чтобы ответить.

5) Если сохранить 20-секундное видео с данными глубины, не станет ли оно очень большим и очень медленным для обработки? как с этим справиться

Если вы снимаете только глубину, нет разницы для видео в градациях серого, учитывая, что у вас одинаковое квантование. Что вы считаете очень большим? Что такое очень медленный процесс? Это слишком широко, чтобы ответить.

0
ответ дан Piglet 18 March 2019 в 23:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: