diff --git a/app/src/main/java/org/ntlab/amaryllis/client/Amaryllis.java b/app/src/main/java/org/ntlab/amaryllis/client/Amaryllis.java index 92081c7..bebc9ad 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/Amaryllis.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/Amaryllis.java @@ -1,9 +1,16 @@ package org.ntlab.amaryllis.client; import android.app.Application; +import android.content.Intent; import android.content.SharedPreferences; import android.location.Location; +import org.ntlab.amaryllis.client.entities.AmaryllisBackgroundService; +import org.ntlab.amaryllis.client.entities.PlayListListener; +import org.ntlab.amaryllis.client.voiceservice.VoiceMemo; + +import java.util.ArrayList; + public class Amaryllis extends Application { private String token = null; private String uid = null; @@ -11,7 +18,18 @@ private String name = null; private String new_introduction = null; private Location location; - + private ArrayList playListListeners; + private int index=0; + AmaryllisBackgroundService amaryllisbackgroundservice; + private ArrayList playList; + +// public Amaryllis(){ +// super(); +// Intent intent=new Intent(this,amaryllisbackgroundservice.getClass()); +// startService(intent); +// amaryllisbackgroundservice=(AmaryllisBackgroundService)getApplicationContext(); +// for(PlayListListener pl: playListListeners) amaryllisbackgroundservice.subscribe(pl); +// } public void setUid(String uid) { SharedPreferences prefData = getSharedPreferences("pref_data", MODE_PRIVATE); SharedPreferences.Editor editor = prefData.edit(); @@ -95,8 +113,12 @@ return location; } - public void getBackgroundService(){ + public AmaryllisBackgroundService getBackgroundService() { + return amaryllisbackgroundservice; + } + + public void getPlayList(){ } } diff --git a/app/src/main/java/org/ntlab/amaryllis/client/MainActivity.java b/app/src/main/java/org/ntlab/amaryllis/client/MainActivity.java index c7d807b..28a99cb 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/MainActivity.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/MainActivity.java @@ -28,11 +28,18 @@ import com.google.android.material.bottomnavigation.BottomNavigationView; +import org.ntlab.amaryllis.client.entities.Category; import org.ntlab.amaryllis.client.fragment.MapsFragment; import org.ntlab.amaryllis.client.resources.AccountsRest; +import org.ntlab.amaryllis.client.resources.CategoriesRest; import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; @@ -42,6 +49,7 @@ private static final String TAG = MainActivity.class.getSimpleName(); LocationManager locationManager; private ArrayList listeners = new ArrayList<>(); + private HashMap categories; @Override protected void onCreate(Bundle savedInstanceState) { @@ -56,33 +64,37 @@ NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); NavigationUI.setupWithNavController(navView, navController); -// if (ContextCompat.checkSelfPermission(this, -// Manifest.permission.ACCESS_FINE_LOCATION) != -// PackageManager.PERMISSION_GRANTED) { -// ActivityCompat.requestPermissions(this, -// new String[]{Manifest.permission.ACCESS_FINE_LOCATION,}, -// 1000); -// } -// else{ -// locationStart(); -// locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 50, this); -// -// -// } + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/amaryllis/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final CategoriesRest categoryService = retrofit.create(CategoriesRest.class); + Call> call = categoryService.getcategories(); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + List clist = response.body(); + HashMap categories = new HashMap<>(); + for (Category c : clist){ + categories.put(c.getcId(),c); + } + MainActivity.this.categories = categories; + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + LocationManager manager = (LocationManager) getSystemService(LOCATION_SERVICE); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - // TODO: Consider calling - // ActivityCompat#requestPermissions - // here to request the missing permissions, and then overriding - // public void onRequestPermissionsResult(int requestCode, String[] permissions, - // int[] grantResults) - // to handle the case where the user grants the permission. See the documentation - // for ActivityCompat#requestPermissions for more details. return; } manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); } + private void locationStart(){ Log.d("debug","locationStart()"); @@ -109,23 +121,10 @@ Log.d("debug", "checkSelfPermission false"); return; } - - // locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 50, this); - } // 結果の受け取り - /** - * Android Quickstart: - * https://developers.google.com/sheets/api/quickstart/android - * - * Respond to requests for permissions at runtime for API 23 and above. - * @param requestCode The request code passed in - * requestPermissions(android.app.Activity, String, int, String[]) - * @param permissions The requested permissions. Never null. - * @param grantResults The grant results for the corresponding permissions - * which is either PERMISSION_GRANTED or PERMISSION_DENIED. Never null. - */ + @Override public void onRequestPermissionsResult( int requestCode, @NonNull String[]permissions, @NonNull int[] grantResults) { @@ -147,19 +146,6 @@ @Override public void onStatusChanged(String provider, int status, Bundle extras) { -// API 29以降非推奨 - -// switch (status) { -// case LocationProvider.AVAILABLE: -// Log.d("debug", "LocationProvider.AVAILABLE"); -// break; -// case LocationProvider.OUT_OF_SERVICE: -// Log.d("debug", "LocationProvider.OUT_OF_SERVICE"); -// break; -// case LocationProvider.TEMPORARILY_UNAVAILABLE: -// Log.d("debug", "LocationProvider.TEMPORARILY_UNAVAILABLE"); -// break; -// } } @@ -171,12 +157,6 @@ } @Override public void onLocationChanged(Location location) { -// Amaryllis amaryllis = (Amaryllis) getApplication(); -// String latitude = String.valueOf(location.getLatitude()); -// String longitude = String.valueOf(location.getLongitude()); -// amaryllis.setLatitude(latitude); -// amaryllis.setLongitude(longitude); - Log.d(TAG, "lat:" + location.getLatitude()); Log.d(TAG, "lon:" + location.getLongitude()); Log.d("debug", "locationChanged" ); @@ -212,4 +192,8 @@ android.os.Process.killProcess(android.os.Process.myPid()); } + public Category getCategory(String cid){ + return categories.get(cid); + } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/amaryllis/client/entities/Category.java b/app/src/main/java/org/ntlab/amaryllis/client/entities/Category.java index 3e44534..64656ed 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/entities/Category.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/entities/Category.java @@ -9,30 +9,28 @@ * 文字列表現された色情報 */ private String color; + + public Category(){} + public Category(String cid,String name,String color){ - this.cid=cid; - this.name=name; - this.color=color; + setcId(cid); + setName(name); + setColor(color); } public String getcId() { return cid; } - public String getName() { return name; } public String getColor(){ return color; } - public void setCid(String cid) { - this.cid = cid; - } - + public void setcId(String cid) { this.cid = cid; } public void setName(String name) { this.name = name; } - public void setColor(String color) { this.color = color; } diff --git a/app/src/main/java/org/ntlab/amaryllis/client/entities/Voicememo.java b/app/src/main/java/org/ntlab/amaryllis/client/entities/Voicememo.java index edaa808..42852a4 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/entities/Voicememo.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/entities/Voicememo.java @@ -28,7 +28,7 @@ public Voicememo() {} - public Voicememo(String vid, String uid, Integer time, String url, double latitude, double longitude, String title, String summary) { + public Voicememo(String vid, String uid, Integer time, String url, double latitude, double longitude, String title, String summary, ArrayList categories) { Calendar upload = Calendar.getInstance(); setVid(vid); setUid(uid); @@ -39,6 +39,7 @@ setLongitude(longitude); setTitle(title); setSummary(summary); + setCategory(categories); this.times = 0; this.favos = 0; } diff --git a/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java b/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java index c55f77b..6e11875 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/fragment/MapsFragment.java @@ -303,18 +303,18 @@ String data = Base64.encodeToString(byteData, 0,byteData.length, Base64.DEFAULT); - Call call = voicememosService.postVoicememos(amaryllis.getUid(),amaryllis.getToken(),10,data,35,135,"untitled",""); - call.enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - Voicememo voicememo = response.body(); - } - - @Override - public void onFailure(Call call, Throwable t) { - - } - }); +// Call call = voicememosService.postVoicememos(amaryllis.getUid(),amaryllis.getToken(),10,data,35,135,"untitled",""); +// call.enqueue(new Callback() { +// @Override +// public void onResponse(Call call, Response response) { +// Voicememo voicememo = response.body(); +// } +// +// @Override +// public void onFailure(Call call, Throwable t) { +// +// } +// }); StartChange = 1; R_Stoping.setAlpha(1.0f); R_Playing.setAlpha(0.0f); diff --git a/app/src/main/java/org/ntlab/amaryllis/client/resources/CategoriesRest.java b/app/src/main/java/org/ntlab/amaryllis/client/resources/CategoriesRest.java index 5f26a14..debc564 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/resources/CategoriesRest.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/resources/CategoriesRest.java @@ -3,6 +3,7 @@ import org.ntlab.amaryllis.client.entities.Category; import java.util.ArrayList; +import java.util.List; import retrofit2.Call; import retrofit2.http.GET; @@ -12,7 +13,7 @@ public interface CategoriesRest { //すべてのcidを取得 @GET("categories") - Call> getcategories(); + Call> getcategories(); //指定したカテゴリを取得 @GET("categories/{cid}") diff --git a/app/src/main/java/org/ntlab/amaryllis/client/resources/VoicememosRest.java b/app/src/main/java/org/ntlab/amaryllis/client/resources/VoicememosRest.java index 9306f4f..eae7187 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/resources/VoicememosRest.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/resources/VoicememosRest.java @@ -41,7 +41,8 @@ @Field("latitude") double latitude, @Field("longitude") double longitude, @Field("title") String title, - @Field("summary") String summary + @Field("summary") String summary, + @Field("categories") List categories ); //指定された投稿の情報を取得 diff --git a/app/src/main/java/org/ntlab/amaryllis/client/voiceservice/PlayListManager.java b/app/src/main/java/org/ntlab/amaryllis/client/voiceservice/PlayListManager.java index b7fdd22..e5e0edd 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/voiceservice/PlayListManager.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/voiceservice/PlayListManager.java @@ -1,18 +1,48 @@ package org.ntlab.amaryllis.client.voiceservice; -import android.location.Location; - import java.util.ArrayList; -public class PlayListManager { - - public void addVoiceMemos(ArrayList voicememo, Location location){ +public class PlayListManager{ + int index = 0; + ArrayList playlist = new ArrayList<>(); + ArrayList unplayedlist = new ArrayList<>(); + //範囲内にある全てのvoicememoのリストを作成 + public void addVoiceMemos(ArrayList voicememos){ + for(int i = 0;i < voicememos.size(); i++) { + boolean exist = false; + for(int j = 0;j < playlist.size(); j++){ + if(voicememos.get(i).getVid().equals(playlist.get(j).getVid())) + exist = true; + } + if(exist = false) + playlist.add(voicememos.get(i)); + } } - public void getPlayList(){ + //範囲内にある全てのvoicememoのリスト + public ArrayList getPlayList(){ + return playlist; + } + //まだ聞いていないvoicememoのリスト + public ArrayList getUnplayedList(){ + //毎回リストを返すのか? + unplayedlist.clear(); + for(int i = index; i < playlist.size(); i++){ + unplayedlist.add(playlist.get(i)); + } + return unplayedlist; } - public void getUnplayed(){ + //次のvoicememoに移動する + public void next() { + index++; } + public void setIndex(){ + this.index = index; + } + + public int getIndex() { + return index; + } } diff --git a/app/src/main/java/org/ntlab/amaryllis/client/voiceservice/VoiceMemo.java b/app/src/main/java/org/ntlab/amaryllis/client/voiceservice/VoiceMemo.java index 3bd8f4c..115bd7f 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/voiceservice/VoiceMemo.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/voiceservice/VoiceMemo.java @@ -1,4 +1,115 @@ package org.ntlab.amaryllis.client.voiceservice; +import com.fasterxml.jackson.annotation.JsonIgnore; + +import org.w3c.dom.Comment; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; + public class VoiceMemo { + + private String vid; + private String uid; + private Calendar upload; + private Integer time; + private String data; + private double latitude; + private double longitude; + private String title; + private String summary; + private Integer times; + @JsonIgnore + private ArrayList favolist; + private Integer favos; + private ArrayList categories; + private HashMap commentMap = new HashMap<>(); + public VoiceMemo(String vid, String uid, Integer time, String url, double latitude, double longitude, String title, String summary) { + Calendar upload = Calendar.getInstance(); + setVid(vid); + setUid(uid); + setUpload(upload); + setTime(time); + setData(url); + setLatitude(latitude); + setLongitude(longitude); + setTitle(title); + setSummary(summary); + this.times = 0; + this.favos = 0; + } + + + + + public String getVid() { + return vid; + } + private void setVid(String vid) { + this.vid = vid; + } + private String getUid() { + return uid; + } + private void setUid(String uid) { + this.uid = uid; + } + public Calendar getUpload() { + return upload; + } + private void setUpload(Calendar upload) { + this.upload = upload; + } + public Integer getTime() { + return time; + } + private void setTime(Integer time) { + this.time = time; + } + public String getData() { + return data; + } + private void setData(String url) { + this.data = url; + } + public double getLatitude() { + return latitude; + } + private void setLatitude(double latitude) { + this.latitude = latitude; + } + public double getLongitude() { + return longitude; + } + private void setLongitude(double longitude) { + this.longitude = longitude; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getSummary() { + return summary; + } + public void setSummary(String summary) { + this.summary = summary; + } + public Integer getTimes() { + return times; + } + public void addTimes() {//?どのタイミングで加算するか + times++; + } + public ArrayList getFavolist(){ return favolist; } + public boolean checkFavo(String uid){ + for (String a : favolist) { + if (a.equals(vid)) { + return true; + } + } + return false; + } }