2013-01-07 1 views
9

Я пытаюсь создать приложение для редактирования видео для Android. Я заметил, что в источниках SDK есть ряд классов в пакете «android.media.videoeditor», которые, похоже, делают то, что мне нужно; однако, когда я пытаюсь импортировать их в свой Java-проект, я не могу, потому что в соответствии с Eclipse их не существует! Я проверил содержимое «android.jar» и, конечно же, классы отсутствуют.Класс видеоредактора Android

Один из классов в этом пакете - MediaArtistNativeHelper.java - использует JNI для вызова любых собственных методов, которые ему нужны, которые реализованы на C++ из того, что я могу сказать (означает ли это, что мне нужно их отдельно строить?)

Вопрос в том, как я могу использовать эти классы в своем проекте?

Я разрабатываю приложение, используя Eclipse на Mac.

+0

Эй, какое-то решение? –

+0

@ Субра См. Мой ответ. – bitek

+1

Я связался с кем-то в Google об этом, и мне сказали использовать MediaCodec вместо того, что я пытался сделать. Пакет видеоредактора скрыт, потому что он не предназначен для использования. Я закончил использование MediaCodec и ffmpeg для решения моей проблемы, поскольку пакет мультимедиа Android не делал именно то, что мне нужно. – Simon

ответ

7

Пакет android.media.videoeditor является внутренним/скрытым пакетом, поскольку Javadoc над его классами/интерфейсами содержит аннотацию {@hide} или @hide.

Вы не можете использовать его из своего приложения, и, как вы видели, API отсутствует в android.jar, который содержит общедоступный API. FYI пакет javadoc можно увидеть here.

Для добавления функциональных возможностей средств массовой информации к приложению использовать android.media package вместо этого, который:

Обеспечивает классы, которые управляют различными интерфейсами мультимедиа в аудио и видео .

Media API используются для воспроизведения и, в некоторых случаях, для записи медиафайлов файлов. Это включает в себя звук (например, воспроизведение MP3-файлов или других музыкальных файлов, мелодии звонка , звуковые эффекты игры или тональные сигналы DTMF) и видео (например, воспроизведение видео , передаваемого по сети или из локального хранилища).

Другие специальные классы в пакете дают возможность обнаруживать лица людей в Bitmaps (FaceDetector), управление аудио маршрутизации (для устройства или гарнитуры) и оповещения управления, таких как мелодии и телефона вибрации (AudioManager).

Содержимое android.jar показывая, что пакет android.media содержит:

(Взято из ADT-расслоением-Linux/SDK/платформы/андроид-17 /android.jar)

enter image description here

+0

Спасибо, но как использовать этот https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/media/java/android/media/videoeditor/OverlayFrame.java, используя класс MediaRecorder .. ?? –

+1

@Subra Проверьте документацию пакета android.media или возьмите исходный код для [platform/frameworks/base] (https://android.googlesource.com/platform/frameworks/base/) и посмотрите, в каких классах вещи от android .media.videoeditor пакет. – bitek

0

Внутренние и скрытые пакеты не могут быть доступны во время компиляции, потому что Android SDK не имеет их.

Для этого нет легкой работы. Однако вы можете попробовать этот урок http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-2-hacking-around/

В этом руководстве объясняется, как извлечь «полный» файл android.jar с устройства, чтобы вы могли получить скрытые пакеты во время компиляции. Когда у вас есть «скрытые» пакеты во время компиляции, вы можете создать свое приложение с ними. Это может звучать как серебряная пуля, но имеет серьезные недостатки. После использования нестандартных API все ставки отключены.Если «скрытые» пакеты должны были быть изменены/изменены в будущих обновлениях ОС, это сломает ваш продукт. В производственной среде этот подход является нарушителем транзакций, но для приложений, разработанных для личного/академического использования, это может быть ваша задача.

Примечание: Я лично не пробовал это, но нашел его когда-нибудь назад, столкнувшись с аналогичной проблемой (мой ответ был в другом скрытом пакете).

Смежные вопросы