Как стать автором
Обновить

Комментарии 19

>Скачать проект можно по ссылке
404…
Директор завода по сжиганию фотографов радуется этом исходникам!
во, как раз искал подобный материал, все руки чешутся покрутить камеру на андроиде. Где можно найти что-то подобное под винмобайл или айфон?
> искал подобный материал, все руки чешутся покрутить камеру на андроиде
Как-то вы очень лениво искали, в стандартных сэмплах есть практически тоже самое, впрочем, автор статьи в конце на один из них ссылку и приложил.
Ежели чего, там ещё много всякого на разные другие темы есть: developer.android.com/resources/samples/
о, спасибо
Скажите, а на сколько сложно обстоят дела с видеозаписью?
Меня очень неустраивает битрейт звука на HTC Desire.
Вот всё пытаюсь сесть и навоять простенькую камеру, но с хорошим звуком.
судя по всему, дело обстоит довольно просто.
предлагается использовать класс MediaRecorder, который имеет множество методов для задания параметров видео и аудио.
setAudioSource()
setVideoSource()
setOutputFormat()
setVideoEncoder()
setAudioEncoder()
setVideoEncodingBitRate()
setAudioEncodingBitRate()
setAudioSamplingRate()
setAudioChannels()
setVideoFrameRate()
setVideoSize()

на коленке получилось по быстрому модифицировать эту программу и даже какое-то видео записалось.
на выходных попробую сделать полноценный пример.
А можно ли каким-то образом отлаживать в эмуляторе, «эмулируя» камеру телефона при помощи камеры компа?
на developer.android.com/guide/developing/tools/emulator.html сказано:
No support for camera/video capture (input).

вообще отладка непосредственно на телефоне оказалась довольно удобной и быстрой, поэтому сильно не переживал )
Насколько я знаю, в эмуляторе есть какой-то имитатор работы видеокамеры. Сам не пользовался.
встроенный имитатор просто показывает вместо превью поле с квадратиками, а вместо снимка дает картинку с зеленым роботом. т.е. отлаживать на эмуляторе, в принципе, можно.
Сохранение картинки в файл лучше обрамить в AsyncTask, что бы не подвешивать основной поток программы.
как-то вот так:
<source>
Извиняюсь, в первый раз рука сорвалась… )
Вот исходник «обрамленной» версии, что бы не быть голословным:
@Override
    public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera)
    {
	
		new SaveInBackground().execute(paramArrayOfByte);
		camera.startPreview();
    }

	class SaveInBackground extends AsyncTask<byte[], String, String> {
		@Override
		protected String doInBackground(byte[]... arrayOfByte) {
			try {
				File saveDir = new File("/sdcard/CameraExample/");

				if (!saveDir.exists())
				{
					saveDir.mkdirs();
				}

				FileOutputStream os = 
           new FileOutputStream(String.format("/sdcard/CameraExample/%d.jpg", System.currentTimeMillis()));
				os.write(arrayOfByte[0]);
				os.close();
        } catch (Exception e) {
			//
        }
			return(null);
		}
	}
Кстати перезапуск активити при смене ориентации экрана не является обязательным. Можно поставить флаг на активити и будет вместо это вызываться один метод. Пишу на телефоне, посмотреть название флага сложно.
Умные люди, подскажите, пожалуйста, можно ли вытащить RAW (Camera.PictureCallback raw) перед сжатием в jpg? По ходу дела эта функция не поддерживается (хотя в документации об этом ни слова), т.к. хип приложения лимитирован (16мб вроде) и рав дата просто не влезает. Может в NDK нужно глянуть?
Есть огромное желание разобраться — почему снимки такие размытые получаются. Сравниваю Мотоандроиды с Motorola Zn5
скажите, а если вызвать метод startPreview() без предварительного setPreviewDisplay() (то есть без окна предпросмотра), то все отработает корректно, за исключением, что не будет окна предпросмотра? я спрашиваю к тому, что хочу сделать приложение «фонарик». то есть через камеру иметь доступ к светодиоду. и не хотелось бы во время вкл/выкл фонарика наблюдать окно предпросмотра камеры
Вы разобрались с этим вопросом? Без создания предпросмотра камера отработает?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории