思特奇智慧酒店云平台 v0.0.5版本的 MD5 值为:dedb172bb322639d79d7e0e26262fb5c

以下内容为反编译后的 Hacks.java 源代码,内容仅作参考


package org.linphone.mediastream.video.capture.hwconf;

import android.hardware.Camera;
import android.os.Build;
import org.linphone.mediastream.Log;
import org.linphone.mediastream.Version;
public final class Hacks {
    public static BuiltInEchoCancellerModel[] mBuiltInEchoCancellerModels = {new BuiltInEchoCancellerModel("samsung", "GT-I9100"), new BuiltInEchoCancellerModel("samsung", "GT-I9300")};

    public static class BuiltInEchoCancellerModel {
        public String manufacturer;
        public String model;

        public BuiltInEchoCancellerModel(String str, String str2) {
            this.manufacturer = str;
            this.model = str2;
        }
    }

    public static boolean hasBuiltInEchoCanceller() {
        BuiltInEchoCancellerModel[] builtInEchoCancellerModelArr;
        for (BuiltInEchoCancellerModel builtInEchoCancellerModel : mBuiltInEchoCancellerModels) {
            if (Build.MANUFACTURER.equals(builtInEchoCancellerModel.manufacturer) && Build.MODEL.startsWith(builtInEchoCancellerModel.model)) {
                Log.i(Build.MANUFACTURER + " " + Build.MODEL + " has a built-in echo canceller");
                return true;
            }
        }
        Log.i(Build.MANUFACTURER + " " + Build.MODEL + " doesn't have a built-in echo canceller");
        return false;
    }

    public static boolean hasCamera() {
        int i;
        if (Version.sdkAboveOrEqual(9)) {
            try {
                i = ((Integer) Camera.class.getMethod("getNumberOfCameras", null).invoke(null, new Object[0])).intValue();
            } catch (Exception unused) {
                Log.e("Error getting number of cameras");
                i = 0;
            }
            return i > 0;
        }
        Log.i("Hack: considering there IS a camera.\nIf it is not the case, report DEVICE and MODEL to linphone-users@nongnu.org");
        return true;
    }

    public static final boolean hasTwoCamerasRear0Front1() {
        return isLGP970() || isSPHD700() || isADR6400();
    }

    public static final boolean isADR6400() {
        return Build.MODEL.startsWith("ADR6400") || Build.DEVICE.startsWith("ADR6400");
    }

    public static boolean isGT9000() {
        return Build.DEVICE.startsWith("GT-I9000");
    }

    public static boolean isGTP1000() {
        return Build.DEVICE.startsWith("GT-P1000");
    }

    public static boolean isGalaxyS() {
        return isGT9000() || isSC02B() || isSGHI896() || isSPHD700();
    }

    public static boolean isGalaxySOrTab() {
        return isGalaxyS() || isGalaxyTab();
    }

    public static boolean isGalaxySOrTabWithFrontCamera() {
        return isGalaxySOrTab() && !isGalaxySOrTabWithoutFrontCamera();
    }

    public static boolean isGalaxySOrTabWithoutFrontCamera() {
        return isSC02B() || isSGHI896();
    }

    public static boolean isGalaxyTab() {
        return isGTP1000();
    }

    public static final boolean isLGP970() {
        return Build.DEVICE.startsWith("LG-P970");
    }

    public static boolean isSC02B() {
        return Build.DEVICE.startsWith("SC-02B");
    }

    public static boolean isSGHI896() {
        return Build.DEVICE.startsWith("SGH-I896");
    }

    public static final boolean isSPHD700() {
        return Build.DEVICE.startsWith("SPH-D700");
    }

    public static boolean needGalaxySAudioHack() {
        return isGalaxySOrTab() && !isSC02B();
    }

    public static boolean needPausingCallForSpeakers() {
        return needGalaxySAudioHack();
    }

    public static boolean needSoftvolume() {
        return isGalaxySOrTab() && Version.sdkStrictlyBelow(9);
    }

    public static final void sleep(int i) {
        try {
            Thread.sleep(i);
        } catch (InterruptedException unused) {
        }
    }
}