Removed camera testing on startup.

This commit is contained in:
Guillaume Beraudo 2011-06-03 15:40:01 +02:00
parent 86af099206
commit f139384616
4 changed files with 30 additions and 25 deletions

View file

@ -18,16 +18,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
package org.linphone; package org.linphone;
import static android.media.AudioManager.ROUTE_EARPIECE;
import static android.media.AudioManager.MODE_IN_CALL; import static android.media.AudioManager.MODE_IN_CALL;
import static android.media.AudioManager.MODE_NORMAL; import static android.media.AudioManager.MODE_NORMAL;
import static android.media.AudioManager.MODE_RINGTONE; import static android.media.AudioManager.MODE_RINGTONE;
import static android.media.AudioManager.ROUTE_EARPIECE;
import static android.media.AudioManager.ROUTE_SPEAKER; import static android.media.AudioManager.ROUTE_SPEAKER;
import static android.media.AudioManager.STREAM_RING; import static android.media.AudioManager.STREAM_RING;
import static android.media.AudioManager.STREAM_VOICE_CALL; import static android.media.AudioManager.STREAM_VOICE_CALL;
import static android.media.AudioManager.VIBRATE_TYPE_RINGER; import static android.media.AudioManager.VIBRATE_TYPE_RINGER;
import static org.linphone.R.string.pref_codec_ilbc_key;
import static org.linphone.R.string.pref_codec_amr_key; import static org.linphone.R.string.pref_codec_amr_key;
import static org.linphone.R.string.pref_codec_ilbc_key;
import static org.linphone.R.string.pref_codec_speex16_key; import static org.linphone.R.string.pref_codec_speex16_key;
import static org.linphone.R.string.pref_codec_speex32_key; import static org.linphone.R.string.pref_codec_speex32_key;
import static org.linphone.R.string.pref_echo_cancellation_key; import static org.linphone.R.string.pref_echo_cancellation_key;
@ -72,7 +72,6 @@ import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor; import android.content.SharedPreferences.Editor;
import android.content.res.Resources; import android.content.res.Resources;
import android.hardware.Camera;
import android.hardware.SensorEvent; import android.hardware.SensorEvent;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.MediaPlayer; import android.media.MediaPlayer;
@ -143,20 +142,6 @@ public final class LinphoneManager implements LinphoneCoreListener {
mPhoneOrientation = o; mPhoneOrientation = o;
} }
}.enable(); }.enable();
detectIfHasCamera();
}
private void detectIfHasCamera() {
Log.i(TAG, "Detecting if a camera is present");
try {
Camera camera = Camera.open();
if (hasCamera = camera != null) {
camera.release();
}
} catch (Throwable e) {}
Log.i(TAG, (hasCamera ? "A" : "No") + " camera is present");
} }
public static final String TAG=Version.TAG; public static final String TAG=Version.TAG;
@ -171,8 +156,6 @@ public final class LinphoneManager implements LinphoneCoreListener {
private Timer mTimer = new Timer("Linphone scheduler"); private Timer mTimer = new Timer("Linphone scheduler");
private BroadcastReceiver mKeepAliveReceiver = new KeepAliveReceiver(); private BroadcastReceiver mKeepAliveReceiver = new KeepAliveReceiver();
private boolean hasCamera;
private synchronized void routeAudioToSpeakerHelper(boolean speakerOn) { private synchronized void routeAudioToSpeakerHelper(boolean speakerOn) {
LinphoneCall call = mLc.getCurrentCall(); LinphoneCall call = mLc.getCurrentCall();
@ -592,10 +575,6 @@ public final class LinphoneManager implements LinphoneCoreListener {
mLc.enablePayloadType(videoCodec, enable); mLc.enablePayloadType(videoCodec, enable);
} }
public boolean hasCamera() {
return hasCamera;
}
public static synchronized void destroy(Context context) { public static synchronized void destroy(Context context) {
if (instance == null) return; if (instance == null) return;
@ -848,7 +827,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
.findPayloadType("AMR", 8000)!=null; .findPayloadType("AMR", 8000)!=null;
e.putBoolean(getString(pref_codec_amr_key), amr); e.putBoolean(getString(pref_codec_amr_key), amr);
if (Version.sdkStrictlyBelow(5) || !Version.hasNeon() || !LinphoneManager.getInstance().hasCamera()) { if (Version.sdkStrictlyBelow(5) || !Version.hasNeon() || !Hacks.hasCamera()) {
e.putBoolean(getString(pref_video_enable_key), false); e.putBoolean(getString(pref_video_enable_key), false);
} }

View file

@ -96,7 +96,7 @@ public class LinphonePreferencesActivity extends PreferenceActivity implements E
detectAudioCodec(pref_codec_amr_key,"AMR",8000); detectAudioCodec(pref_codec_amr_key,"AMR",8000);
// No video // No video
if (Version.sdkStrictlyBelow(5) || !Version.hasNeon() || !LinphoneManager.getInstance().hasCamera()) { if (Version.sdkStrictlyBelow(5) || !Version.hasNeon() || !Hacks.hasCamera()) {
uncheckAndDisableCheckbox(pref_video_enable_key); uncheckAndDisableCheckbox(pref_video_enable_key);
} }
if (prefs().getBoolean(LinphoneActivity.PREF_FIRST_LAUNCH,true)) { if (prefs().getBoolean(LinphoneActivity.PREF_FIRST_LAUNCH,true)) {

View file

@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
package org.linphone.core; package org.linphone.core;
import android.hardware.Camera;
import android.media.AudioManager; import android.media.AudioManager;
import android.os.Build; import android.os.Build;
import android.util.Log; import android.util.Log;
@ -126,4 +127,21 @@ public final class Hacks {
public static boolean hasTwoCameras() { public static boolean hasTwoCameras() {
return isSPHD700() || isGalaxySOrTabWithFrontCamera(); return isSPHD700() || isGalaxySOrTabWithFrontCamera();
} }
public static boolean hasCamera() {
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
int nb = 0;
try {
nb = (Integer) Camera.class.getMethod("getNumberOfCameras", (Class[])null).invoke(null);
} catch (Exception e) {
Log.wtf(Version.TAG, "Error getting number of cameras");
}
return nb > 0;
}
Log.i(Version.TAG, "Hack: considering there IS a camera.\n"
+ "If it is not the case, report DEVICE and MODEL to linphone-users@nongnu.org");
return true;
}
} }

View file

@ -28,6 +28,14 @@ public class Version {
public static final String TAG="Linphone"; public static final String TAG="Linphone";
public static final int API03_CUPCAKE_15 = 3;
public static final int API04_DONUT_16 = 4;
public static final int API06_ECLAIR_20 = 6;
public static final int API07_ECLAIR_21 = 7;
public static final int API08_FROYO_22 = 8;
public static final int API09_GINGERBREAD_23 = 9;
public static final int API11_HONEYCOMB_30 = 11;
private static native boolean nativeHasNeon(); private static native boolean nativeHasNeon();
private static Boolean hasNeon; private static Boolean hasNeon;