问题
I am working in AndroidStudio trying to set an image to display on the screen after it is taken by the camera. This is working flawlessly on the emulator but when I test it on my device (Nexus 5) the image does not show up.
I have tried scaling down my image which didn't work, I also tried using a small image in my drawables folder to make sure it wasn't a file path issue (the drawable image also displayed on the emulator but not on my phone). I also tried converting the bitmap to a drawable and setting it to the background of the imageView which also didn't work. I am not sure what else to try at this point.
EDIT: I should add that if I explicitly add the image in the XML as a background it will show up on my device which makes me think it is my java. On the other hand I can get the image to show up on another activity with this same java code which makes me think it is the layout.
File file = cameraShot;
ImageView leftEye = (ImageView) view.findViewById(R.id.ghostAlign);
if(leftEye != null) {
Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath());
leftEye.setImageBitmap(bmp);
}
Layout:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cameraFrag"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:foreground="?selectableItemBackground"
android:tag="ScopiCamera"
tools:ignore="UnusedAttribute">
<FitTextureView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/texture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
<ImageView
android:id="@+id/ghostAlign"
android:scaleType="fitXY"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="false"
android:alpha="0.5" />
</FrameLayout>
回答1:
I'd suggest you to see if there is no memory problem due to loading your image. See this page from doc in order to reduce memory consumption when loading your image.
I had this problem too, the image was opened on other devices but not on my phone. Maybe by properly loading your bitmap, it will works.
回答2:
first check
google photo in nexus5 enable status?
if google photo setting's disable
can't file path's use & file open
(check : use file maneger on "file.getAbsolutePath()" )
can't gallery use, naxus's google account disable status
--
second textureView no use'd check
next code possible?
public class MainActivity extends Activity{
static final int REQUEST_IMAGE_CAPTURE = 1;
ImageView leftEye;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
leftEye = (ImageView) findViewById(R.id.ghostAlign);
dispatchTakePictureIntent();
}
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
if(leftEye != null) {
Bitmap imageBitmap = (Bitmap) extras.get("data");
leftEye.setImageBitmap(imageBitmap);
}
}
}
}
if Bitmap on imageview's see. i think, AbsolutePath error
来源:https://stackoverflow.com/questions/42964929/android-imageview-displays-on-emulator-but-not-on-device