当我使用Androids相机应用程序拍照时,它会检测手机的方向并相应地保存照片.因此,如果我拍摄建筑物的照片,无论是将手机置于横向位置还是纵向,屋顶都将位于顶部.
但是,当我使用时
Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
要获得图片,相机应用程序不会对方向做出反应.如果我垂直握住手机(人像),结果图片将会旋转,所述建筑物的屋顶位于屏幕左侧.
如何设置意图以使相机考虑方向?
或者我可以在某种程度上推断出拍摄照片的方向,然后自己旋转它?
或者任何其他建议将不胜感激.
〜提前致谢,最好的问候.
我需要用相机拍照,如果取决于图片大小,请先将其旋转,然后再将其保存到图库中.
我正在使用
Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT,uri); startActivityForResult(imageCaptureIntent,IMAGE_CAPTURE);
拍摄照片并将其保存到临时文件中.
然后
位图bmp = BitmapFactory.decodeFile(imagePath);
String str = android.provider.MediaStore.Images.Media.insertImage(cr,bmp,name,description);
保存它.
这是我试图用来旋转位图的代码
Matrix matrix = new Matrix();
matrix.postRotate(180);
Bitmap x = Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),bmp.getHeight(),matrix,true);
android.provider.MediaStore.Images.Media.insertImage(cr,x,name,description);
问题是我得到一个OutOfMemoryException.
是否有更好的方法来处理位图以避免破坏内存?
〜先谢谢,问候
使用绿色dao时,需要进行一些代码自定义,以便从一个模式更新到下一个模式.对于我之前的需求,在DaoMaster.java中使用这样的代码添加任何新表就足够了:
if(oldVersion==SCHEMA_VERSION_OLD_VERSION&& newVersion==SCHEMA_VERSION){
Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by adding language & checklist table");
boolean ifNotExists = true;
NewTableDao.createTable(db, ifNotExists);
NewTable2Dao.createTable(db, ifNotExists);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,它的效果非常好.但是对于我当前的模式,我在表之间添加了更多连接,并且在从旧版本更新之后,我发现崩溃表明新列不存在.
在greendao有添加新列的方法吗?我是否需要以旧学校的方式编写sqlite代码才能实现这一目标?(任何代码示例都很受欢迎)
提前致谢