Skip to content

Commit

Permalink
image gallery
Browse files Browse the repository at this point in the history
  • Loading branch information
timonback committed Oct 29, 2017
1 parent 4a4f416 commit 747d4a3
Show file tree
Hide file tree
Showing 25 changed files with 1,454 additions and 47 deletions.
16 changes: 13 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,15 @@ android {
buildToolsVersion "26.0.1"
defaultConfig {
applicationId 'de.timonback.android.whatisthatplace'
minSdkVersion 14
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
buildTypes {
release {
minifyEnabled false
Expand All @@ -28,12 +31,19 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})

compile 'com.squareup.picasso:picasso:2.5.0'




compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.8.1'
compile 'com.squareup.picasso:picasso:2.5.0'
compile 'io.github.luizgrp.sectionedrecyclerviewadapter:sectionedrecyclerviewadapter:1.1.3'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:design:25.3.1'

compile 'com.android.support:support-v4:25.3.1'
testCompile 'junit:junit:4.12'
}
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

<application
android:allowBackup="true"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,7 @@

public class Constants {
public static final String DIR_PIC = Environment.DIRECTORY_PICTURES;
public static final String DIR_DCIM = Environment.DIRECTORY_DCIM;

public static final String VISION_API_KEY = "AIzaSyD26X-CzeqyqPbtHDgMWu-YstQTSJLps_Y";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package de.timonback.android.whatisthatplace.activity;

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.io.File;
import java.util.ArrayList;

import de.timonback.android.whatisthatplace.Constants;
import de.timonback.android.whatisthatplace.R;
import de.timonback.android.whatisthatplace.activity.provider.DBProvider;
import de.timonback.android.whatisthatplace.activity.provider.ImageProvider;
import de.timonback.android.whatisthatplace.component.MyCallable;
import de.timonback.android.whatisthatplace.component.database.VisionResultDbHelper;
import de.timonback.android.whatisthatplace.component.gallery.GalleryAdapter;
import de.timonback.android.whatisthatplace.component.gallery.GalleryItem;

public class GalleryFragment extends Fragment {
public static final String LOG_NAME = GalleryFragment.class.getName();

private DBProvider dbProvider;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_gallery, container, false);

RecyclerView recyclerView = (RecyclerView)view.findViewById(R.id.imagegallery);
recyclerView.setHasFixedSize(true);

RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(),3);
recyclerView.setLayoutManager(layoutManager);

ArrayList<GalleryItem> createLists = prepareData();
GalleryAdapter adapter = new GalleryAdapter(getActivity(), createLists, new MyCallable<GalleryItem>() {
@Override
public void call(GalleryItem item) {
Log.i(LOG_NAME, "Gallery Click");
String filePath = item.getImageFile().getPath();

//gVisionComponent.analyze(filePath, GVisionComponent.FEATURE.LANDMARK);
}
});
recyclerView.setAdapter(adapter);

return view;
}

private ArrayList<GalleryItem> prepareData() {
ArrayList<GalleryItem> items = new ArrayList<>();

for(File image: ImageProvider.getFilePaths(getActivity())) {
items.add(new GalleryItem(image.getName(), image));
}

return items;
}

/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @return A new instance of fragment GalleryFragment.
*/
public static GalleryFragment newInstance(DBProvider dbProvider) {
GalleryFragment fragment = new GalleryFragment();
fragment.dbProvider = dbProvider;

Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
}
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
package de.timonback.android.whatisthatplace.activity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.content.FileProvider;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
Expand All @@ -16,44 +11,43 @@
import android.view.Menu;
import android.view.MenuItem;


import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import de.timonback.android.whatisthatplace.Constants;
import de.timonback.android.whatisthatplace.R;
import de.timonback.android.whatisthatplace.activity.provider.DBProvider;
import de.timonback.android.whatisthatplace.component.CameraComponent;
import de.timonback.android.whatisthatplace.component.GalleryAdapter;
import de.timonback.android.whatisthatplace.component.GalleryItem;
import de.timonback.android.whatisthatplace.component.MyCallable;
import de.timonback.android.whatisthatplace.component.database.VisionResultDbHelper;
import de.timonback.android.whatisthatplace.component.gallery.GalleryAdapter;
import de.timonback.android.whatisthatplace.component.gallery.GalleryItem;

public class MainActivity extends AppCompatActivity {
public class MainActivity extends AppCompatActivity implements DBProvider {
private static final String LOG_NAME = MainActivity.class.getName();

private static final int REQUEST_IMAGE_CAPTURE = 1;

private VisionResultDbHelper gVisionDb = null;
private CameraComponent cameraComponent = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

gVisionDb = new VisionResultDbHelper(this);
cameraComponent = new CameraComponent();
//gVisionComponent = new GVisionComponent();

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

RecyclerView recyclerView = (RecyclerView)findViewById(R.id.imagegallery);
recyclerView.setHasFixedSize(true);
if (savedInstanceState == null) {
GalleryFragment gallyerFragment = GalleryFragment.newInstance(this);

RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),3);
recyclerView.setLayoutManager(layoutManager);

ArrayList<GalleryItem> createLists = prepareData();
GalleryAdapter adapter = new GalleryAdapter(getApplicationContext(), createLists);
recyclerView.setAdapter(adapter);
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, gallyerFragment).commit();
}

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
Expand All @@ -64,24 +58,19 @@ public void onClick(View v) {
});
}

private ArrayList<GalleryItem> prepareData() {
ArrayList<GalleryItem> items = new ArrayList<>();
File folder = getExternalFilesDir(Constants.DIR_PIC);

for(File file: folder.listFiles()) {
items.add(new GalleryItem(file.getName(), file));
}

return items;
}

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

@Override
protected void onDestroy() {
gVisionDb.close();
super.onDestroy();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
Expand All @@ -95,4 +84,9 @@ public boolean onOptionsItemSelected(MenuItem item) {

return super.onOptionsItemSelected(item);
}

@Override
public VisionResultDbHelper getDB() {
return gVisionDb;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package de.timonback.android.whatisthatplace.activity.provider;

import de.timonback.android.whatisthatplace.component.database.VisionResultDbHelper;

public interface DBProvider {
VisionResultDbHelper getDB();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package de.timonback.android.whatisthatplace.activity.provider;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

public class ImageProvider {
public static List<File> getFilePaths(Context context) {
List<File> resultIAV = new ArrayList<>();

String[] projection = { MediaStore.Images.Media.DATA };
Cursor c = null;
Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
if (u != null)
{
c = context.getContentResolver().query(u, projection, null, null, null);
}

Set<String> directories = new TreeSet<>();
if ((c != null) && (c.moveToFirst())) {
do {
String tempDir = c.getString(0);
tempDir = tempDir.substring(0, tempDir.lastIndexOf("/"));
try {
directories.add(tempDir);
} catch (Exception e) {

}
}
while (c.moveToNext());

c.close();
}

for (String directory: directories) {
File imageDir = new File(directory);
File[] imageList = imageDir.listFiles();
if (imageList == null)
continue;
for (File imagePath : imageList) {
try {

if (imagePath.isDirectory()) {
imageList = imagePath.listFiles();
}
if (imagePath.getName().contains(".jpg") || imagePath.getName().contains(".JPG")
|| imagePath.getName().contains(".jpeg") || imagePath.getName().contains(".JPEG")
|| imagePath.getName().contains(".png") || imagePath.getName().contains(".PNG")
|| imagePath.getName().contains(".gif") || imagePath.getName().contains(".GIF")
|| imagePath.getName().contains(".bmp") || imagePath.getName().contains(".BMP")
) {

resultIAV.add(imagePath);

}
}
catch (Exception e) {
e.printStackTrace();
}
}
}

return resultIAV;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package de.timonback.android.whatisthatplace.component;


public interface MyCallable<T> {
void call(T param);
}
Loading

0 comments on commit 747d4a3

Please sign in to comment.