Android Open Source - compCellScope Image_ Gallery






From Project

Back to project page compCellScope.

License

The source code is released under:

MIT License

If you think the Android project compCellScope listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.wallerlab.compcellscope;
/*from ww  w. j  a va 2 s  .c  o  m*/
import android.app.Activity;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.ExifInterface;
import android.os.Bundle;
import android.os.Environment;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;


public class Image_Gallery extends Activity {

    SharedPreferences settings;
    final String LOG = "Image_Gallery";
    private int counter;
    private SeekBar seekBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image__gallery);
        counter = 0;
        final ImageView currPic = new ImageView(this);

        DisplayMetrics metrics = this.getResources().getDisplayMetrics();
        final int screen_width = metrics.widthPixels;


        SharedPreferences settings = getSharedPreferences(Folder_Chooser.PREFS_NAME, 0);
        //SharedPreferences.Editor edit = settings.edit();
        String path = settings.getString(Folder_Chooser.location_name, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString());

        //Log.d(LOG, "  |  " + path + " |  ");
        TextView text1 = (TextView)findViewById(R.id.text1);
        final TextView text2 = (TextView)findViewById(R.id.text2);

        text1.setText(path);

        File directory = new File(path);

        // get all the files from a directory
        File[] dump_files = directory.listFiles();
        Log.d(LOG, dump_files.length + " ");

        final File [] fList = removeElements(dump_files, "info.json");

        Log.d(LOG, "Filtered Length: " + fList.length);

        Arrays.sort(fList, new Comparator<File>() {
            @Override
            public int compare(File file, File file2) {
                String one = file.toString();
                String two = file2.toString();
                //Log.d(LOG, "one: " + one);
                //Log.d(LOG, "two: " + two);
                int num_one = Integer.parseInt(one.substring(one.lastIndexOf("(") + 1, one.lastIndexOf(")")));
                int num_two = Integer.parseInt(two.substring(two.lastIndexOf("(") + 1, two.lastIndexOf(")")));
                return num_one - num_two;
            }
        });




        try {
            writeJsonFile(fList);
        } catch (JSONException e){
            Log.d(LOG, "JSON WRITE FAILED");
        }





        //List names programattically
        LinearLayout myLinearLayout = (LinearLayout) findViewById(R.id.linear_table);
        final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                screen_width + 4);

        myLinearLayout.setOrientation(LinearLayout.VERTICAL);


        if(fList != null) {
            File cur_pic = fList[0];

            BitmapFactory.Options opts = new BitmapFactory.Options();
            Log.d(LOG, "\n File Location: " + cur_pic.getAbsolutePath() + " \n"
             + " Parent: " + cur_pic.getParent().toString() + "\n");

            Bitmap myImage = BitmapFactory.decodeFile(cur_pic.getAbsolutePath(), opts);

            currPic.setLayoutParams(params);
            currPic.setImageBitmap(myImage);
            currPic.setId(View.generateViewId());
            text2.setText(cur_pic.getName());
        }

        myLinearLayout.addView(currPic);


        //Seekbar
        seekBar = (SeekBar) findViewById(R.id.seekBar);
        seekBar.setEnabled(true);
        seekBar.setMax(fList.length - 1);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            int progress = 0;
            int length = fList.length;

            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                setCounter(i);
                if(getCounter() <= fList.length){
                    File cur_pic = fList[getCounter()];
                    BitmapFactory.Options opts = new BitmapFactory.Options();
                    opts.inJustDecodeBounds = true;
                    Bitmap myImage = BitmapFactory.decodeFile(cur_pic.getAbsolutePath(), opts);
                    int image_width = opts.outWidth;
                    int image_height = opts.outHeight;
                    int sampleSize = image_width/screen_width;
                    opts.inSampleSize = sampleSize;

                    text2.setText(cur_pic.getName());

                    opts.inJustDecodeBounds = false;
                    myImage = BitmapFactory.decodeFile(cur_pic.getAbsolutePath(), opts);

                    currPic.setImageBitmap(myImage);
                }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });


        //Make Button Layout
        LinearLayout buttonLayout = new LinearLayout(this);
        buttonLayout.setOrientation(LinearLayout.HORIZONTAL);
            
        LinearLayout.LayoutParams LLParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f);
        buttonLayout.setLayoutParams(LLParams);
        buttonLayout.setId(View.generateViewId());


        //Button Layout Params
        LinearLayout.LayoutParams param_button = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT, 1.0f);


        //Prev Pic
        Button prevPic = new Button(this);
        prevPic.setText("Previous");
        prevPic.setId(View.generateViewId());
        prevPic.setLayoutParams(param_button);

        prevPic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(fList != null){
                    decrementCounter();
                    if(getCounter() >= 0){
                        File cur_pic = fList[getCounter()];
                        BitmapFactory.Options opts = new BitmapFactory.Options();
                        opts.inJustDecodeBounds = true;
                        Bitmap myImage = BitmapFactory.decodeFile(cur_pic.getAbsolutePath(), opts);
                        int image_width = opts.outWidth;
                        int image_height = opts.outHeight;
                        int sampleSize = image_width/screen_width;
                        opts.inSampleSize = sampleSize;

                        text2.setText(cur_pic.getName());

                        opts.inJustDecodeBounds = false;
                        myImage = BitmapFactory.decodeFile(cur_pic.getAbsolutePath(), opts);
                        //Log.d(LOG, getCounter() + "");
                        seekBar.setProgress(getCounter());
                        currPic.setImageBitmap(myImage);

                    }else{
                        setCounter(0);
                    }

                } else{
                    Toast.makeText(Image_Gallery.this, "There are no pictures in this folder", Toast.LENGTH_SHORT);
                    setCounter(getCounter() - 1);
                }
            }});

        buttonLayout.addView(prevPic);

        // Next Picture  Button
        Button nextPic = new Button(this);
        nextPic.setText("Next");
        nextPic.setId(View.generateViewId());
        nextPic.setLayoutParams(param_button);

        buttonLayout.addView(nextPic);
        nextPic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(fList != null){
                    incrementCounter();
                    if(getCounter() < fList.length){
                        File cur_pic = fList[getCounter()];
                        BitmapFactory.Options opts = new BitmapFactory.Options();
                        opts.inJustDecodeBounds = true;
                        Bitmap myImage = BitmapFactory.decodeFile(cur_pic.getAbsolutePath(), opts);
                        int image_width = opts.outWidth;
                        int image_height = opts.outHeight;
                        int sampleSize = image_width/screen_width;
                        opts.inSampleSize = sampleSize;

                        text2.setText(cur_pic.getName());

                        opts.inJustDecodeBounds = false;
                        myImage = BitmapFactory.decodeFile(cur_pic.getAbsolutePath(), opts);
                        //Log.d(LOG, getCounter() + "");
                        seekBar.setProgress(getCounter());

                        currPic.setImageBitmap(myImage);
                    }else{
                        setCounter(getCounter() - 1);
                    }

                } else{
                    Toast.makeText(Image_Gallery.this, "There are no pictures in this folder", Toast.LENGTH_SHORT);
                    setCounter(getCounter() - 1);
                }
            }});

        myLinearLayout.addView(buttonLayout);
    }



    private void incrementCounter(){
        counter++;
    }

    private void setCounter(int i){
        counter = i;
    }

    private int getCounter(){
        return counter;
    }

    private void decrementCounter(){
        counter--;
    }

    private void writeJsonFile(File[] files) throws JSONException {

        ExifInterface inter;

        //Can write meta deta to the JSON File
        JSONArray image_files = new JSONArray();
        for(int i = 0; i < files.length; i++)
        {
            File file = files[i];
            JSONObject image = new JSONObject();
            String one = file.getName().toString();

            Log.d(LOG, "Fileyyyyyy: " + file.getPath());
            //Get Information about picture hidden in tags
            try {
                inter = new ExifInterface(file.getPath());
                Log.d(LOG, "Date Taken: " + inter.getAttribute(ExifInterface.TAG_DATETIME));
                Log.d(LOG, "GPSTimeStamp Taken: " + inter.getAttribute(ExifInterface.TAG_GPS_DATESTAMP));
                Log.d(LOG, "Make Taken: " + inter.getAttribute(ExifInterface.TAG_MAKE));
            }catch (IOException e){
                e.printStackTrace();
            }



            Integer.parseInt(one.substring(one.lastIndexOf("(") + 1, one.lastIndexOf(")")));
            Integer.parseInt(one.substring(one.lastIndexOf("(") + 1, one.lastIndexOf(")")));
            image.put("name", one);
            image.put("focus", Integer.parseInt(one.substring(one.lastIndexOf("(") + 1, one.lastIndexOf(")"))));

            image_files.put(image);
        }

        try{
            FileWriter file = new FileWriter(files[0].getParent().toString() + File.separator + "info.json");
            file.write("test");
            file.flush();
            file.close();
        } catch(IOException e) {
            e.printStackTrace();
        }


    }

    public static File[] removeElements(File[] input, String deleteMe) {
        ArrayList<File> result = new ArrayList<File>();
        Log.d("Image_Gallery", "Got here: " + input.length);
        for(File item : input)
            if(!item.toString().contains(deleteMe))
                result.add(item);

        Log.d("Image_Gallery", "Got here: " + result.size());


        return result.toArray(new File[result.size()]);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.image__gallery, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}




Java Source Code List

com.wallerlab.compcellscope.AcquireActivity.java
com.wallerlab.compcellscope.AcquireActivity.java
com.wallerlab.compcellscope.AcquireSettings.java
com.wallerlab.compcellscope.AcquireSurfaceView.java
com.wallerlab.compcellscope.AcquireSurfaceView.java
com.wallerlab.compcellscope.BluetoothActivity.java
com.wallerlab.compcellscope.BluetoothApplicationClass.java
com.wallerlab.compcellscope.BluetoothApplicationClass.java
com.wallerlab.compcellscope.BluetoothDeviceListActivity.java
com.wallerlab.compcellscope.BluetoothDeviceListActivity.java
com.wallerlab.compcellscope.BluetoothService.java
com.wallerlab.compcellscope.BluetoothService.java
com.wallerlab.compcellscope.BurstModeActivity.java
com.wallerlab.compcellscope.DirectoryChooserDialog.java
com.wallerlab.compcellscope.Folder_Chooser.java
com.wallerlab.compcellscope.ImageProgressTask.java
com.wallerlab.compcellscope.ImageProgressTask.java
com.wallerlab.compcellscope.Image_Gallery.java
com.wallerlab.compcellscope.MainActivity.java
com.wallerlab.compcellscope.MainActivity.java
com.wallerlab.compcellscope.MultiModeViewActivity.java
com.wallerlab.compcellscope.MultiModeView.java
com.wallerlab.compcellscope.PortraitCameraView.java