Don't load Camera Manager on video uncapable devices.
This commit is contained in:
parent
4d47899e2f
commit
5576cf97ef
5 changed files with 32 additions and 16 deletions
|
@ -23,6 +23,7 @@ import java.util.List;
|
|||
import org.linphone.core.LinphoneCallParams;
|
||||
import org.linphone.core.LinphoneCore;
|
||||
import org.linphone.core.Log;
|
||||
import org.linphone.core.Version;
|
||||
import org.linphone.core.VideoSize;
|
||||
import org.linphone.core.video.AndroidCameraRecordManager;
|
||||
|
||||
|
@ -83,7 +84,7 @@ public class BandwidthManager {
|
|||
public void updateWithProfileSettings(LinphoneCore lc, LinphoneCallParams callParams) {
|
||||
// Setting Linphone Core Preferred Video Size
|
||||
boolean bandwidthOKForVideo = isVideoPossible();
|
||||
if (bandwidthOKForVideo) {
|
||||
if (bandwidthOKForVideo && Version.isVideoCapable()) {
|
||||
AndroidCameraRecordManager acrm = AndroidCameraRecordManager.getInstance();
|
||||
boolean isPortrait=acrm.isFrameToBeShownPortrait();
|
||||
VideoSize targetVideoSize=maxSupportedVideoSize(isPortrait, getMaximumVideoSize(isPortrait),
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.linphone.core.CallDirection;
|
|||
import org.linphone.core.LinphoneCall;
|
||||
import org.linphone.core.LinphoneCore;
|
||||
import org.linphone.core.Log;
|
||||
import org.linphone.core.Version;
|
||||
import org.linphone.core.LinphoneCall.State;
|
||||
import org.linphone.core.video.AndroidCameraRecordManager;
|
||||
import org.linphone.ui.AddVideoButton;
|
||||
|
@ -314,15 +315,18 @@ public class DialerActivity extends SoftVolumeActivity implements LinphoneGuiLis
|
|||
((CallButton) incomingCallView.findViewById(R.id.Call)).setExternalClickListener(new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
dialog.dismiss();
|
||||
LinphoneManager.getInstance().resetCameraFromPreferences();
|
||||
if (Version.isVideoCapable()) {
|
||||
LinphoneManager.getInstance().resetCameraFromPreferences();
|
||||
|
||||
// Privacy setting to not share the user camera by default
|
||||
boolean prefVideoEnable = LinphoneManager.getInstance().isVideoEnabled();
|
||||
boolean prefAutoShareMyCamera = mPref.getBoolean(getString(R.string.pref_video_automatically_share_my_video_key), false);
|
||||
boolean videoMuted = !(prefVideoEnable && prefAutoShareMyCamera);
|
||||
AndroidCameraRecordManager.getInstance().setMuted(videoMuted);
|
||||
// Privacy setting to not share the user camera by default
|
||||
boolean prefVideoEnable = LinphoneManager.getInstance().isVideoEnabled();
|
||||
int key = R.string.pref_video_automatically_share_my_video_key;
|
||||
boolean prefAutoShareMyCamera = mPref.getBoolean(getString(key), false);
|
||||
boolean videoMuted = !(prefVideoEnable && prefAutoShareMyCamera);
|
||||
AndroidCameraRecordManager.getInstance().setMuted(videoMuted);
|
||||
|
||||
LinphoneManager.getLc().getCurrentCall().enableCamera(prefAutoShareMyCamera);
|
||||
LinphoneManager.getLc().getCurrentCall().enableCamera(prefAutoShareMyCamera);
|
||||
}
|
||||
}
|
||||
});
|
||||
((HangCallButton) incomingCallView.findViewById(R.id.Decline)).setExternalClickListener(new OnClickListener() {
|
||||
|
|
|
@ -130,7 +130,9 @@ public final class LinphoneManager implements LinphoneCoreListener {
|
|||
mPowerManager = (PowerManager) c.getSystemService(Context.POWER_SERVICE);
|
||||
mR = c.getResources();
|
||||
|
||||
AndroidCameraRecordManager.getInstance().startOrientationSensor(c.getApplicationContext());
|
||||
if (Version.isVideoCapable()) {
|
||||
AndroidCameraRecordManager.getInstance().startOrientationSensor(c.getApplicationContext());
|
||||
}
|
||||
}
|
||||
|
||||
private static final int LINPHONE_VOLUME_STREAM = STREAM_VOICE_CALL;
|
||||
|
@ -241,10 +243,16 @@ public final class LinphoneManager implements LinphoneCoreListener {
|
|||
lAddress.setDisplayName(address.getDisplayedName());
|
||||
|
||||
try {
|
||||
boolean prefVideoEnable = isVideoEnabled();
|
||||
boolean prefInitiateWithVideo = mPref.getBoolean(mR.getString(R.string.pref_video_initiate_call_with_video_key), false);
|
||||
resetCameraFromPreferences();
|
||||
CallManager.getInstance().inviteAddress(lAddress, prefVideoEnable && prefInitiateWithVideo);
|
||||
if (Version.isVideoCapable()) {
|
||||
boolean prefVideoEnable = isVideoEnabled();
|
||||
int key = R.string.pref_video_initiate_call_with_video_key;
|
||||
boolean prefInitiateWithVideo = mPref.getBoolean(mR.getString(key), false);
|
||||
resetCameraFromPreferences();
|
||||
CallManager.getInstance().inviteAddress(lAddress, prefVideoEnable && prefInitiateWithVideo);
|
||||
} else {
|
||||
CallManager.getInstance().inviteAddress(lAddress, false);
|
||||
}
|
||||
|
||||
|
||||
} catch (LinphoneCoreException e) {
|
||||
serviceListener.tryingNewOutgoingCallButCannotGetCallParameters();
|
||||
|
|
|
@ -98,6 +98,8 @@ public class LinphonePreferencesActivity extends PreferenceActivity implements E
|
|||
// No video
|
||||
if (!Version.isVideoCapable()) {
|
||||
uncheckAndDisableCheckbox(pref_video_enable_key);
|
||||
} else if (!AndroidCameraRecordManager.getInstance().hasFrontCamera()) {
|
||||
uncheckDisableAndHideCheckbox(R.string.pref_video_use_front_camera_key);
|
||||
}
|
||||
if (prefs().getBoolean(LinphoneActivity.PREF_FIRST_LAUNCH,true)) {
|
||||
if (fastCpu) {
|
||||
|
@ -110,9 +112,7 @@ public class LinphonePreferencesActivity extends PreferenceActivity implements E
|
|||
|
||||
detectVideoCodec(R.string.pref_video_codec_h264_key, "H264");
|
||||
|
||||
if (!AndroidCameraRecordManager.getInstance().hasFrontCamera()) {
|
||||
uncheckDisableAndHideCheckbox(R.string.pref_video_use_front_camera_key);
|
||||
}
|
||||
|
||||
|
||||
if (Hacks.needSoftvolume()) checkAndDisableCheckbox(R.string.pref_audio_soft_volume_key);
|
||||
}
|
||||
|
|
|
@ -67,6 +67,9 @@ public class AndroidCameraRecordManager {
|
|||
|
||||
// singleton
|
||||
private AndroidCameraRecordManager() {
|
||||
if (!Version.isVideoCapable()) { // imply sdk>=5
|
||||
throw new RuntimeException("AndroidCameraRecordManager: hardware is not video capable");
|
||||
}
|
||||
cc = Version.sdkAboveOrEqual(9) ? new AndroidCameraConf9() : new AndroidCameraConf5();
|
||||
Log.i("=== Detected " + cc.getFoundCameras()+ " ===");
|
||||
cameraId = cc.getFoundCameras().defaultC;
|
||||
|
|
Loading…
Reference in a new issue