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 28a99cb..1437f35 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/MainActivity.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/MainActivity.java @@ -24,6 +24,10 @@ import android.os.Debug; import android.provider.Settings; import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.ImageButton; import android.widget.Toast; import com.google.android.material.bottomnavigation.BottomNavigationView; @@ -50,6 +54,14 @@ LocationManager locationManager; private ArrayList listeners = new ArrayList<>(); private HashMap categories; + ArrayList checkedList = new ArrayList<>(); + HashMap menuItemMap = new HashMap<>(); + ImageButton playbutton; + ImageButton stopbutton; + ImageButton skipbutton; + + int playfrag=0; + int stopfrag=0; @Override protected void onCreate(Bundle savedInstanceState) { @@ -85,6 +97,37 @@ public void onFailure(Call> call, Throwable t) { } + + }); + + //収音関係のボタンの処理 + playbutton = (ImageButton)findViewById(R.id.playbutton); + playbutton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + playfrag++; + if((playfrag%2)==0){ + //こっち側がオフ + }else{ + //こっち側がオン + } + } + }); + stopbutton = (ImageButton)findViewById(R.id.stopbutton); + stopbutton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + stopfrag++; + if((stopfrag%2)==0){ + //こっち側がオフ + }else{ + //こっち側がオン + } + } + }); + skipbutton = (ImageButton)findViewById(R.id.skipbutton); + skipbutton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + + } }); @@ -196,4 +239,39 @@ return categories.get(cid); } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.nav_drawer_menu, menu); + + //カテゴリーの数だけitemを定義 + for(Category category : categories.values()){ + String name = category.getName(); + String cid = category.getcId(); + MenuItem newItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, name); + menuItemMap.put(newItem.getItemId(),cid); + newItem.setCheckable(true); + newItem.setChecked(true); + checkedList.add(cid); + } + return true; + } + + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + String cid = menuItemMap.get(item.getItemId()); + + item.setChecked(!item.isChecked()); + if(item.isChecked()){ + checkedList.remove(cid); + }else{ + checkedList.add(cid); + } + return super.onOptionsItemSelected(item); + } + + public ArrayList getCheckedCidList() { + return checkedList; + } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/amaryllis/client/entities/AmaryllisBackgroundService.java b/app/src/main/java/org/ntlab/amaryllis/client/entities/AmaryllisBackgroundService.java index 53cc29f..7ef7aa6 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/entities/AmaryllisBackgroundService.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/entities/AmaryllisBackgroundService.java @@ -2,21 +2,70 @@ import android.app.IntentService; import android.content.Intent; -import android.content.Context; +import android.location.Location; +import android.location.LocationListener; +import android.os.Bundle; +import org.ntlab.amaryllis.client.resources.VoicememosRest; import org.ntlab.amaryllis.client.voiceservice.PlayListManager; +import org.ntlab.amaryllis.client.voiceservice.VoiceMemo; import java.util.ArrayList; +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; -public class AmaryllisBackgroundService extends IntentService { +public class AmaryllisBackgroundService extends IntentService implements LocationListener { private ArrayList playListListeners; private PlayListManager playListManager; + private double longitude,latitude; + private int i=0; public AmaryllisBackgroundService() { super("AmaryllisBackgroundService"); playListListeners=new ArrayList<>(); } +// ArrayList Lat; + @Override + public void onCreate() { + super.onCreate(); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/amaryllis/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final VoicememosRest voicememosRest=retrofit.create(VoicememosRest.class); + Call> call=voicememosRest.getVoicememos(145.0,0.0,145.0,0.0); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + List voicememos = response.body(); + float distance[] = new float[voicememos.size()]; + ArrayList t = new ArrayList<>(); + for(VoiceMemo v:voicememos){ + double lat=v.getLatitude(); + double lon=v.getLongitude(); + Location.distanceBetween(latitude,longitude,lat,lon,distance); + if (distance[i] < 50){ + //ここにPlayListManagerへ投稿を送る + t.add(v); + } + i++; + } + playListManager.addVoiceMemos(t); + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + } @Override protected void onHandleIntent(Intent intent) { @@ -38,4 +87,26 @@ } +// ArrayList<> 変数名 = new ArrayList(); + + @Override + public void onLocationChanged(Location location) { + longitude=location.getLongitude(); + latitude=location.getLatitude(); + } + + @Override + public void onStatusChanged(String s, int i, Bundle bundle) { + } + + @Override + public void onProviderEnabled(String s) { + + } + + @Override + public void onProviderDisabled(String s) { + + } + } 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 eae7187..9ddd31e 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 @@ -6,6 +6,7 @@ import org.ntlab.amaryllis.client.entities.VoicememosFavosDeleteResponse; import org.ntlab.amaryllis.client.entities.VoicememosFavosResponse; import org.ntlab.amaryllis.client.entities.VoicememostimesResponse; +import org.ntlab.amaryllis.client.voiceservice.VoiceMemo; import java.util.ArrayList; import java.util.List; @@ -23,7 +24,7 @@ public interface VoicememosRest { //全てのvidを取得 @GET("voicememos") - Call> getVoicememos( + Call> getVoicememos( @Query("latmax") Double latmax, @Query("latmin") Double latmin, @Query("longmax") Double longmax, 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 e5e0edd..95957b0 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 @@ -5,7 +5,6 @@ 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++) { @@ -23,13 +22,26 @@ public ArrayList getPlayList(){ return playlist; } - //まだ聞いていないvoicememoのリスト + + //次に聞くvoicememoを渡す public ArrayList getUnplayedList(){ - //毎回リストを返すのか? - unplayedlist.clear(); - for(int i = index; i < playlist.size(); i++){ - unplayedlist.add(playlist.get(i)); + ArrayList unplayedlist = new ArrayList<>(); + if (index != 0){ + index++; } + unplayedlist.add(playlist.get(index)); +// for(int i = 0;i < unplayedlist.size(); i++) { +// boolean exist = false; +// for(int j= index;j < playlist.size(); j++){ +// if(playlist.get(j).getVid().equals(unplayedlist.get(i).getVid())) +// exist = true; +// } +// if(exist = false) +// playlist.add(unplayedlist.get(i)); +// } +// for(int i = index; i < playlist.size(); i++){ +// unplayedlist.add(playlist.get(i)); +// } return unplayedlist; } diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 2fe6f9f..b6381cc 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -67,4 +67,14 @@ app:layout_constraintTop_toTopOf="@+id/name" app:layout_constraintVertical_bias="0.0" /> + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d4cd154..31acee6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -5,6 +5,10 @@ android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="#FFFFFF" + android:backgroundTint="@color/design_default_color_background" + android:foregroundTint="#FFFFFF" + android:visibility="visible" tools:context=".MainActivity"> + app:menu="@menu/bottom_nav_menu"> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_signup.xml b/app/src/main/res/layout/activity_signup.xml index ae97e94..de3fd30 100644 --- a/app/src/main/res/layout/activity_signup.xml +++ b/app/src/main/res/layout/activity_signup.xml @@ -79,4 +79,14 @@ app:layout_constraintTop_toBottomOf="@+id/passWord" app:layout_constraintVertical_bias="0.734" /> + + \ No newline at end of file diff --git a/app/src/main/res/menu/nav_drawer_menu.xml b/app/src/main/res/menu/nav_drawer_menu.xml new file mode 100644 index 0000000..2caa7a4 --- /dev/null +++ b/app/src/main/res/menu/nav_drawer_menu.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file