Morning chaps and lasses,
I'm trying to create a library to utilize androids' MediaRecorder functionality.
http://developer.android.com/reference/android/media/MediaRecorder.html
Upon trying to setup a preview I keep getting an error.
Here is the code snippet that the error occurs on
from looking at the unfiltered logs I would guess the camera Unlock()s ok
As you can see I have added numerous 'logging' points to keep track of how it goes.
I have tried all sorts of combinations. Re-ordering the way other parameters are set like sources and encoders. At one point I had the invalid state @ (1) not (4), mostly it is 4 though. Any ideas?
If I don't add a camera or video source/encoder then the preview seems to start ok as though I could record audio.This camera seems to be the tricky bit.
You can see the entire code in necessary.
Thanks
I'm trying to create a library to utilize androids' MediaRecorder functionality.
http://developer.android.com/reference/android/media/MediaRecorder.html
Upon trying to setup a preview I keep getting an error.
B4X:
setCamera called in an invalid state(4)
java.lang.IllegalStateException
Here is the code snippet that the error occurs on
B4X:
public void StartPreview() {
if(mState == STATE_UNINITIALIZED) {
BA.Log("***MediaRecorder(" + mEventName + ") NOT Initialized***");
}
else if(mFileSet != true) {
BA.Log("***MediaRecorder(" + mEventName + ") OutputFile NOT Set***");
}
else if(mState == STATE_STOPPED || mState == STATE_NONE) {
BA.Log("Setting up preview");
//Default to back Camera if not set
if(mCamera != null){
mCamera.unlock();
BA.Log("Camera Unlocked");
((MediaRecorder)getObject()).setCamera(mCamera); //error occurs on this line
BA.Log("Camera Set to " + mCamera.toString());
//Default Camcorder Profile
if (cProfile < 0) {
cProfile = CAMCORDER_PROFILE_QUALITY_HIGH;
BA.Log("Setting default Profile");
}
((MediaRecorder)getObject()).setProfile(CamcorderProfile.get(cProfile));
BA.Log("Starting adding sv");
mPanel.addView(sv, LP);
mHolder = sv.getHolder();
mHolder.setFixedSize(mPanel.getLayoutParams().width, mPanel.getLayoutParams().height);
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//mCamera.startPreview();
BA.Log("sv all added - " + LP.toString());
}
}
}
from looking at the unfiltered logs I would guess the camera Unlock()s ok
B4X:
Setting up preview
recordingEnabled
Qint android::recording_enabled(camera_device*): E
recordingEnabled: (0)
Camera Unlocked
setCamera called in an invalid state(4)
main_activity_create (B4A line: 47)
MR.StartPreview()
java.lang.IllegalStateException
at android.media.MediaRecorder.setCamera(Native Method)
As you can see I have added numerous 'logging' points to keep track of how it goes.
I have tried all sorts of combinations. Re-ordering the way other parameters are set like sources and encoders. At one point I had the invalid state @ (1) not (4), mostly it is 4 though. Any ideas?
If I don't add a camera or video source/encoder then the preview seems to start ok as though I could record audio.This camera seems to be the tricky bit.
You can see the entire code in necessary.
Thanks