找回密码
 注册
搜索
查看: 4126|回复: 0

[讨论] 手机前摄仿苹果 白屏拍照

[复制链接]
发表于 2016-12-22 15:43:32 | 显示全部楼层 |阅读模式
前段时间碰到的问题,客户要求仿照苹果的手机,前摄在拍照时,会瞬闪白屏以达到补光拍照的效果;

当时给的时间比较紧,我是采用的拍照时,获取界面UI,使其背景变为白色,并隐藏其他所有控件,0.8秒左右后,使其恢复;

修改代码:
        在vendor/mediatek/proprietary/packages/apps/Camera/src/com/android/camera/bridge/CameraAppUiImpl.java 中
        修改 private OnShutterButtonListener mPhotoShutterListener = new OnShutterButtonListener() { 中的
                onShutterButtonLongPressed方法;
在方法末尾添加:
       
            final LinearLayout camerashutter = (LinearLayout) mCameraActivity.findViewById(R.id.camera_shutter);
            final LinearLayout screenpickers = (LinearLayout) mCameraActivity.findViewById(R.id.on_screen_pickers);
            final ModePickerScrollView mScrollView = (ModePickerScrollView) mCameraActivity.findViewById(R.id.mode_picker_scroller);
            final ImageView settingindicator = (ImageView) mCameraActivity.findViewById(R.id.setting_indicator);
            final ImageView mThumbnail = (ImageView) mCameraActivity.findViewById(R.id.thumbnail);
            final TextView mTextView = (TextView) mCameraActivity.findViewById(R.id.remaining_view);

                mViewLayerNormal.setBackgroundColor(Color.WHITE);
                camerashutter.setVisibility(View.INVISIBLE);
                screenpickers.setVisibility(View.INVISIBLE);
                mScrollView.setVisibility(View.INVISIBLE);
                settingindicator.setVisibility(View.INVISIBLE);
                mThumbnail.setVisibility(View.INVISIBLE);
                mTextView.setVisibility(View.INVISIBLE);

                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mViewLayerNormal.setBackgroundColor(Color.TRANSPARENT);
                        camerashutter.setVisibility(View.VISIBLE);
                        screenpickers.setVisibility(View.VISIBLE);
                        mScrollView.setVisibility(View.VISIBLE);
                        settingindicator.setVisibility(View.VISIBLE);
                        mThumbnail.setVisibility(View.VISIBLE);
                    }
                }, 800);

当然,上述控件是需要导包的:
import android.content.Intent;
import android.widget.FrameLayout;
import android.graphics.Color;
import com.android.camera.ui.FaceView;
import com.android.camera.ui.FrameView;
import android.widget.ListView;
import android.widget.LinearLayout;
import com.android.camera.ui.ModePickerScrollView;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import com.android.camera.CameraHolder;
import android.widget.TextView;
import com.android.camera.bridge.CameraDeviceCtrl;
import com.android.featureoption.FeatureOption;


这些只是基本的实现白屏闪光的效果代码,具体的区分前后摄的判断,以及菜单的添加,白屏闪光跟零延迟拍照的冲突问题,代码就不发在这了;


对于苹果的这种白屏拍照效果,有更好的仿照方法的小伙伴,欢迎前来交流 。。




高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-9-21 10:48 , Processed in 0.044483 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表