Android 4.0.2에서 4.1.2로 업그레이드 한 후 자체 제작 한 앱이 더 이상 작동하지 않습니다.갤럭시 S2의 Android 업데이트 이후 메모리 부족 메모리
사진을 촬영할 때 콜백 데이터로 비트 맵을 만들어야합니다. 비트 맵 명령 중에 메모리 부족 오류가 발생합니다.
나는 구글 월호에 비슷한 문제를 발견했습니다 http://code.google.com/p/android/issues/detail?id=42516
그래서 나는 수정을 시도,하지만 나를 위해 작동하지 않습니다. 화면이 검은 색으로 유지되고 카메라 오류 -1 예외가 발생합니다.난 그냥 몇 가지 실험을이 문제에 달려 만들어 내 결론 :
- 당신은 어떤 드로어 블을 설정할 수 있습니다 ( 된 setContentView를 사용하지 않는 것이 대신 사용 위해 LayoutInflater 인플레이터 = LayoutInflater.from getApplicatio을 : 또는 XML 색상 및 활동
수정에게 누출 그렇게, 된 setContentView에 적용 nContext());
inflater.inflate(R.layout.activity_frontpage, (ViewGroup) findViewById(android.R.id.content), true);
public class ScanCallback implements PictureCallback {
MainActivity mainActivity;
private boolean savePicture = false;
public ScanCallback(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap bitmapPicture = BitmapFactory.decodeByteArray(data, 0,
data.length);
Bitmap redrawn = bitmapPicture.copy(bitmapPicture.getConfig(), true);
mainActivity.mCamera.startPreview();
MainActivity.waitForCallback = false;
}
}
그리고 내 메인은 Activity.onCreate : 그것에 대해이야
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
mPreview = new CameraView(this);
mainActivity = this;
scanCallback = new ScanCallback();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// setContentView(mPreview);
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
inflater.inflate(R.layout.activity_main,
// (ViewGroup) findViewById(android.R.id.content), true);
setProgressBarIndeterminateVisibility(false);
}
여기 내 콜백입니다. 다른 코드를보고 싶다면 알려주십시오.
수정 프로그램을 실행하는 방법에 대한 아이디어가 있으십니까? 또는 처음에 오류를 피하는 방법은 무엇입니까?
전체 사진을 찍어야합니까? 비트 맵을 다운 샘플링 할 수 있습니다. –
사진에서 6 개의 200x200 정사각형이 필요합니다. 나머지는 다운 샘플링 할 수 있습니다. – Josch
다운 샘플링 또는 거대한 비트 맵을 더 작은 비트 맵으로 분해하고 하나씩 처리하여 효율적인 비트 맵 처리를 살펴보십시오. –