If this happens in a custom camera activity, I suspect multithreading (or actually, lack thereof). If you open the camera on the UI thread, then pictureTaken()
callback will also be called on the same thread, freezing the UI (unpleasant, but maybe tolerable), and also any BT service communication, which may be lethal for the latter.
The first cure would be to take communications with BT to secondary thread, because there may be other interlock conditions, too.
Second, open the camera on a secondary event thread (see an example), and then the camera callbacks will not freeze the UI and services that use the UI thread.