2013-07-03 2 views
0

Я новичок в android.I пытался работать с приложением, используя какой-то открытый исходный код. Приложение использует изображение из галереи, а затем оно берется и изображение и мы делаем некоторые операции над изображением.удалите опцию «Выбрать изображение из галереи», когда приложение запустится. Android

Что мне нужно, приложение должно начинаться с какого-либо изображения по умолчанию уже в изображении. Затем я добавлю кнопку для выбора изображения из галереи позже. Я не мог понять поток работы здесь. Было бы признательно, если бы кто-нибудь мог вести меня.

Вот мой основной код. Он также содержит заставку.

public class Main extends Activity { 

static final String PREFS_FILE = "image_edit"; 

/** The URI of the Image to display. */ 


private int _wait; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.main_screen); 
    _wait = 1000; 

    imageUri = null; 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    if (_wait != 0) { 

     new CountDownTimer(_wait, _wait) { 
      @Override 
      public void onFinish() { 
       if (imageUri != null) { 
        Intent viewActivity = new Intent(Main.this, Viewer.class); 
        viewActivity.putExtra("image", imageUri); 
        startActivity(viewActivity); 
       } else { 

        startActivityForResult(newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI),0); 
       } 
      } 

      @Override 
      public void onTick(long millisUntilFinished) { 

      } 

     }.start(); 
     _wait = 0; 
    } else { 
     if (imageUri != null) { 
      Intent viewActivity = new Intent(this, Viewer.class); 
      viewActivity.putExtra("image", imageUri); 
      startActivity(viewActivity); 
     } else { 

      startActivityForResult(newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), 0); 
     } 
    } 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    imageUri = null; 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == Activity.RESULT_OK) { 
     imageUri = data.getData(); 
    } else { 
     System.exit(0); 
     Log.e("result", "BAD"); 
     } 
    } 
} 

Тогда отсюда изображение, полученное переходит к следующей операции под названием Телезритель активность которого onresume это

protected void onResume() { 
    super.onResume(); 

    mHandler = new Handler(); 

    mPreferences = this.getSharedPreferences(Main.PREFS_FILE, 0); 
    setContentView(R.layout.nothing); 

    // Inflate all the views. 
    int orientation = getResources().getConfiguration().orientation; 
    basicInit(orientation); 
    if (orientation == Configuration.ORIENTATION_PORTRAIT) { 
     initPortrait(); 

    } else { 
     initLandscape(); 
    } 

    Intent intent = getIntent(); 
    Uri imageURI = null; 
    Log.e("URI:", intent.getData() + ""); 
    if (intent.getAction() != null && intent.getAction().equals(Intent.ACTION_SEND)) { 
     Bundle extras = intent.getExtras(); 
     if (extras.containsKey(Intent.EXTRA_STREAM)) { 
      imageURI = (Uri) extras.getParcelable(Intent.EXTRA_STREAM); 
     } 
    } else if (intent.getAction() != null && intent.getAction().equals(Intent.ACTION_VIEW)) { 
     imageURI = intent.getData(); 
    } else { 
     imageURI = (Uri) intent.getParcelableExtra("image"); 
    } 

    addImage(imageURI); 

    addDraggableImages(); 

    _updateImageTask = new UpdateImage(mRelative, mHandler); 


    } 

Так что я попытался сделать это в главном окне, где

if(wait !=0){} 
    else{ 
    startActivity(new Intent(Main.this, Viewer.class)); 
    } 

, но это не работает..error is runtimeexception

Значит, это будет Helpf ul, если кто-то руководил мной .. Спасибо

ответ

0

Как вы можете видеть в методе onResume() вашего MainActivity, сначала он перейдет в другую часть i.e startActivityForResult, которая откроет галерею и попросит вас поднять изображение.

Вместо того, чтобы это в onResume, вы можете просто создать кнопку в main_screen.xml

, а затем реализовать эту функцию в onclickListener этой кнопки.

Чтобы увидеть изображение по умолчанию, в ImageView теге вашего XML вы можете поместить это: андроид: SRC = «@ вытяжке/ImageFile»

Имеет ли смысл для вас?

+0

Да, спасибо ... это имело смысл для меня .... lol –

0

Ниже приведены классы Java и файл laoyout, похожие на приложение, о котором вы говорите.

MainActivity.java

 package com.tag.photocaptureandgallery; 

    import java.io.File; 
    import java.io.FileNotFoundException; 
    import java.io.FileOutputStream; 
    import java.io.IOException; 
    import java.io.OutputStream; 

    import android.app.Activity; 
    import android.app.AlertDialog; 
    import android.content.DialogInterface; 
    import android.content.Intent; 
    import android.database.Cursor; 
    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.os.Environment; 
    import android.provider.MediaStore; 
    import android.provider.MediaStore.MediaColumns; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.Button; 
    import android.widget.ImageView; 

    public class MainActivity extends Activity { 

private final int SELECT_FILE = 1; 
private final int REQUEST_CAMERA = 0; 
private ImageView ivImage; 
private Button btnSetImage; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ivImage = (ImageView) findViewById(R.id.ivImage); 
    btnSetImage = (Button) findViewById(R.id.btnSelectPhoto); 

    btnSetImage.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      selectImage(); 
     } 
    }); 

} 

private void selectImage() { 
    final CharSequence[] items = { "Take Photo", "Choose from Library", 
      "Cancel" }; 

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
    builder.setTitle("Add Photo!"); 
    builder.setItems(items, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      if (items[item].equals("Take Photo")) { 
       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       File f = new File(android.os.Environment 
         .getExternalStorageDirectory(), "temp.jpg"); 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
       startActivityForResult(intent, REQUEST_CAMERA); 
      } else if (items[item].equals("Choose from Library")) { 
       Intent intent = new Intent(
         Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       intent.setType("image/*"); 
       startActivityForResult(
         Intent.createChooser(intent, "Select File"), 
         SELECT_FILE); 
      } else if (items[item].equals("Cancel")) { 
       dialog.dismiss(); 
      } 
     } 
    }); 
    builder.show(); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (requestCode == REQUEST_CAMERA) { 
      File f = new File(Environment.getExternalStorageDirectory() 
        .toString()); 
      for (File temp : f.listFiles()) { 
       if (temp.getName().equals("temp.jpg")) { 
        f = temp; 
        break; 
       } 
      } 
      try { 
       Bitmap bm; 
       BitmapFactory.Options btmapOptions = new BitmapFactory.Options(); 

       bm = BitmapFactory.decodeFile(f.getAbsolutePath(), 
         btmapOptions); 

       // bm = Bitmap.createScaledBitmap(bm, 70, 70, true); 
       ivImage.setImageBitmap(bm); 

       String path = android.os.Environment 
         .getExternalStorageDirectory() 
         + File.separator 
         + "Phoenix" + File.separator + "default"; 
       f.delete(); 
       OutputStream fOut = null; 
       File file = new File(path, String.valueOf(System 
         .currentTimeMillis()) + ".jpg"); 
       try { 
        fOut = new FileOutputStream(file); 
        bm.compress(Bitmap.CompressFormat.JPEG, 85, fOut); 
        fOut.flush(); 
        fOut.close(); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } else if (requestCode == SELECT_FILE) { 
      Uri selectedImageUri = data.getData(); 

      String tempPath = getPath(selectedImageUri, MainActivity.this); 
      Bitmap bm; 
      BitmapFactory.Options btmapOptions = new BitmapFactory.Options(); 
      bm = BitmapFactory.decodeFile(tempPath, btmapOptions); 
      ivImage.setImageBitmap(bm); 
     } 
    } 
} 

public String getPath(Uri uri, Activity activity) { 
    String[] projection = { MediaColumns.DATA }; 
    Cursor cursor = activity 
      .managedQuery(uri, projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

}

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:padding="10dp" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:padding="5dp" > 

    <Button 
     android:id="@+id/btnSelectPhoto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Select Photo" /> 

</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="10dp" > 

    <ImageView 
     android:id="@+id/ivImage" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 

</LinearLayout> 

</LinearLayout> 

Кроме того, добавить необходимые разрешения для использования камеры.

Смежные вопросы