Android平台上从Camera的jpegquality菜单研究JNI接口(二)

本文深入探讨了Android平台上Camera JPEG质量参数的获取过程,通过JNI接口`native_get_num_image_encoding_quality_levels()`和`native_get_image_encoding_quality_level()`来获取和排序质量等级。同时介绍了JNI层的接口注册和实现,包括`MediaProfiles`类的相关方法。
摘要由CSDN通过智能技术生成

 

3、  Jpeg quality参数的获取

在文件CameraProfile.java中,有下面的code

    static {

        System.loadLibrary("media_jni");

        native_init();

        sJpegEncodingQualityParameters = getImageEncodingQualityLevels();

}

private static int[] getImageEncodingQualityLevels() {

        int nLevels = native_get_num_image_encoding_quality_levels();

        if (nLevels != QUALITY_HIGH + 1) {

            throw new RuntimeException("Unexpected Jpeg encoding quality levels " + nLevels);

        }

 

        int[] levels = new int[nLevels];

        for (int i = 0; i < nLevels; ++i) {

            levels[i] = native_get_image_encoding_quality_level(i);

        }

        Arrays.sort(levels);  // Lower quality level ALWAYS comes before higher one

        return levels;

    }

 

    // Methods implemented by JNI

    private static native final void native_init();

    private static native final int native_get_num_image_encoding_quality_levels();

    private static native final int native_get_image_encoding_quality_level(int index);

}

存储jpeg quality参数的数组sJpegEncodingQualityParameters由函数

getImageEncodingQualityLevels()产生,在该函数中调用了JNI接口

native_get_num_image_encoding_quality_levels()获取了quality等级的数目,然后又通过native_get_image_encoding_quality_level(i)获取每个等级对应的值,并通过Arrays.sort(levels)对这些值进行了排序,最好返回给数组

sJpegEncodingQualityParameters

这里动态加载了库media_jni,并且调用了三个JNI接口,下面我们对JNI层的相关code做以介绍。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值