Skip to content

Commit

Permalink
Vision API + Knowledge API
Browse files Browse the repository at this point in the history
  • Loading branch information
timonback committed Dec 6, 2017
1 parent 40fbe87 commit da62f83
Show file tree
Hide file tree
Showing 46 changed files with 809 additions and 475 deletions.
26 changes: 14 additions & 12 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "26.0.1"
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
applicationId 'de.timonback.android.whatisthatplace'
minSdkVersion 19
targetSdkVersion 25
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Expand All @@ -31,19 +31,21 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})





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 'com.squareup.picasso:picasso:2.5.2'
compile 'com.github.bumptech.glide:glide:4.2.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
compile 'com.google.guava:guava:23.3-android'
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:appcompat-v7:26.1.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.android.support:cardview-v7:26.1.0'
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'
compile 'com.android.support:design:26.1.0'
compile 'com.android.support:support-v4:26.1.0'

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 @@ -13,6 +13,7 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:hardwareAccelerated="true"
android:theme="@style/AppTheme">
<activity
android:name=".activity.MainActivity"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,67 +1,91 @@
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 com.google.common.collect.ListMultimap;
import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.Ordering;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;

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;
import de.timonback.android.whatisthatplace.component.gallery.GallerySection;
import io.github.luizgrp.sectionedrecyclerviewadapter.SectionedRecyclerViewAdapter;

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

private DBProvider dbProvider;
private SectionedRecyclerViewAdapter sectionAdapter;

@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);
sectionAdapter = new SectionedRecyclerViewAdapter();

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

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();
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.imagegallery);

//gVisionComponent.analyze(filePath, GVisionComponent.FEATURE.LANDMARK);
GridLayoutManager glm = new GridLayoutManager(getContext(), 3);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch (sectionAdapter.getSectionItemViewType(position)) {
case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER:
return 3;
default:
return 1;
}
}
});
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(glm);
recyclerView.setAdapter(sectionAdapter);

return view;
}

private ArrayList<GalleryItem> prepareData() {
ArrayList<GalleryItem> items = new ArrayList<>();
private void prepareData() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");

ListMultimap<String, File> treeListMultimap =
MultimapBuilder.treeKeys(Ordering.natural().reverse()).arrayListValues().build();

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -1);
Date modifiedOneYearAgo = calendar.getTime();

for(File image: ImageProvider.getFilePaths(getActivity())) {
items.add(new GalleryItem(image.getName(), image));
for (File image : ImageProvider.getFilePaths(getActivity())) {
if (new Date(image.lastModified()).after(modifiedOneYearAgo)) {
treeListMultimap.put(sdf.format(image.lastModified()), image);
}
}

return items;
for (Map.Entry<String, Collection<File>> entry : treeListMultimap.asMap().entrySet()) {
List<GalleryItem> galleryItems = new ArrayList<>();
for (File galleryFile : entry.getValue()) {
galleryItems.add(new GalleryItem(galleryFile.getName(), galleryFile));
}

GallerySection section = new GallerySection(getActivity(), entry.getKey(), galleryItems);
sectionAdapter.addSection(section);
}
}

/**
Expand All @@ -70,9 +94,8 @@ private ArrayList<GalleryItem> prepareData() {
*
* @return A new instance of fragment GalleryFragment.
*/
public static GalleryFragment newInstance(DBProvider dbProvider) {
public static GalleryFragment newInstance() {
GalleryFragment fragment = new GalleryFragment();
fragment.dbProvider = dbProvider;

Bundle args = new Bundle();
fragment.setArguments(args);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,32 @@
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;


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.component.CameraComponent;
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 implements DBProvider {
public class MainActivity extends AppCompatActivity {
private static final String LOG_NAME = MainActivity.class.getName();

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);

if (savedInstanceState == null) {
GalleryFragment gallyerFragment = GalleryFragment.newInstance(this);
GalleryFragment gallyerFragment = GalleryFragment.newInstance();

getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, gallyerFragment).commit();
Expand All @@ -67,7 +52,6 @@ public boolean onCreateOptionsMenu(Menu menu) {

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

Expand All @@ -84,9 +68,4 @@ public boolean onOptionsItemSelected(MenuItem item) {

return super.onOptionsItemSelected(item);
}

@Override
public VisionResultDbHelper getDB() {
return gVisionDb;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,29 +1,28 @@
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.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

public class ImageProvider {
private static final Comparator<File> modifiedComparator = new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
if(o1.lastModified() > o2.lastModified()) {
return -1;
if (o1.lastModified() == o2.lastModified()) {
return 0;
} else if (o1.lastModified() < o2.lastModified()) {
return 1;
}
return 1;
return -1;
}
};

Expand Down Expand Up @@ -82,7 +81,6 @@ public static List<File> getFilePaths(Context context) {
}
}


Collections.sort(resultIAV, modifiedComparator);

return resultIAV;
Expand Down

This file was deleted.

Loading

0 comments on commit da62f83

Please sign in to comment.