diff --git a/.idea/misc.xml b/.idea/misc.xml index dfd2c79..37a7509 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/app/src/main/java/org/ntlab/amaryllis/client/VoiceActivity.java b/app/src/main/java/org/ntlab/amaryllis/client/VoiceActivity.java index 91be140..782dd66 100644 --- a/app/src/main/java/org/ntlab/amaryllis/client/VoiceActivity.java +++ b/app/src/main/java/org/ntlab/amaryllis/client/VoiceActivity.java @@ -1,5 +1,6 @@ package org.ntlab.amaryllis.client; +import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; @@ -7,9 +8,11 @@ import android.media.MediaPlayer; import android.media.MediaRecorder; +import android.os.Build; import android.os.Bundle; import android.app.FragmentManager; +import android.util.Log; import android.view.LayoutInflater; import android.os.Environment; import android.view.View; @@ -19,25 +22,58 @@ import android.widget.SeekBar; import android.widget.TextView; +import org.ntlab.amaryllis.client.entities.Voicememo; +import org.ntlab.amaryllis.client.resources.AccountsRest; + import java.io.File; +import java.io.*; +import android.media.*; +import java.io.FileInputStream;// + +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import android.util.Base64; + +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + public class VoiceActivity extends AppCompatActivity { private MediaRecorder mr; private MediaPlayer mp; - static final String filePath = Environment.getExternalStorageDirectory() + "/app/res/raw"; + // static final String filePath = Environment.getExternalStorageDirectory() + "/app/res/raw"; private int totalTime; private SeekBar positionBar; private TextView elapsedTimeLabel; private TextView remainingTimeLabel; private int StartChange = 1; File file; + byte[] buff; + String moji; + private byte[] byteData = new byte[4096]; + private short[] shortData = new short[2048]; + private int bufSize; + + private FileInputStream in; // ファイル読み込み用 + + @RequiresApi(api = Build.VERSION_CODES.O) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_maps); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/amaryllis/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final AccountsRest signUpService = retrofit.create(AccountsRest.class); + Amaryllis amaryllis =(Amaryllis) getApplication(); + String uid = amaryllis.getUid(); + String passWord = amaryllis.getPassword(); + //setContentView(R.layout.activity_voice); file = new File(getFilesDir(),"Sample.3gp"); mp = new MediaPlayer(); @@ -62,6 +98,11 @@ startPlay(); } }); + + // String enc = Base64.encodeToString(file, 0, file.length, Base64.VoicememosRest); + //byte[]a = Base64.getEncoder().encode(moji.getBytes(charset)); + + } @@ -177,13 +218,19 @@ try { TextView textView1 = (TextView)findViewById(R.id.Notice); textView1.setText("Record Start!"); + in = new FileInputStream(file); mr = new MediaRecorder(); mr.setAudioSource(MediaRecorder.AudioSource.MIC); mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); + mr.setOutputFile(file.getAbsolutePath()); //mr.setOutputFile(filePath); + in.read(byteData); + byte2short(shortData, byteData); + Base64.encodeToString(byteData, 0,byteData.length, Base64.DEFAULT); + mr.prepare(); mr.start(); StartChange = 0; @@ -196,6 +243,10 @@ + + + + //private Handler handler = new Handler(){ //@Override //public void handleMessage(Message msg){ @@ -241,7 +292,12 @@ //e.printStackTrace(); //} //} + void byte2short(short data[], byte bdata[]){ + int i; + for(i = 0; i < bdata.length / 2; i++){ + // リトルエンディアン + data[i] = (short) ((short) bdata[2 * i] + (short) bdata[2 * i + 1] * 256); + } + } - - -} \ No newline at end of file +} 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 new file mode 100644 index 0000000..b644ad5 --- /dev/null +++ b/app/src/main/java/org/ntlab/amaryllis/client/entities/Voicememo.java @@ -0,0 +1,162 @@ +package org.ntlab.amaryllis.client.entities; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import org.w3c.dom.Comment; + +import java.io.File; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.HashMap; +import java.util.UUID; + +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; + } + public void addFavolist(String uid){ + if(checkFavo(uid)){ + return; + } + favolist.add(uid); + setFavos(); + } + public void removeFavolist(String uid) { + favolist.remove(uid); + setFavos(); + } + public Integer getFavos(){ return favos; } + private void setFavos(){ + favos = favolist.size(); + } + public ArrayList getCategory(){ return categories; } + public void addCategory(String categoryId){ + for (String a : categories) { + if (a.equals(categoryId)) { + return; + } + } + categories.add(categoryId); + } + public void removeCategory(String CategoryId) { + categories.remove(CategoryId); + } + public Collection getComments() { + return commentMap.values(); + } + public Comment getComment(String commentId) { + return commentMap.get(commentId); + } +// public Comment createComment(String uid, String text) { +// if (uid == null || text == null) { +// return null; +// } +// String commentId = UUID.randomUUID().toString(); +// Comment newComment = new Comment(commentId, uid, text); +// commentMap.put(commentId,newComment); +// return newComment; +// } + public void removeComment(String commentId) { + commentMap.remove(commentId); + } +} 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 05f898e..2c27d5a 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 @@ -1,60 +1,53 @@ package org.ntlab.amaryllis.client.resources; -import org.ntlab.amaryllis.client.entities.Account; -import org.ntlab.amaryllis.client.entities.AccountDeleteResponse; - -import java.util.ArrayList; +import org.ntlab.amaryllis.client.entities.Voicememo; import retrofit2.Call; -import retrofit2.http.DELETE; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Field; -import retrofit2.http.PUT; -import retrofit2.http.Path; -import retrofit2.http.Query; public interface VoicememosRest { //全てのvidを取得 - //@GET("voicememos") - //Call> getVoicememos(); +// @GET("voicememos") +// Call> getVoicememos(); //ボイスメモを追加します。 - //@FormUrlEncoded - //@POST("voicememos") - //Call PostVoicememos( - //@Field("uid") String uid, - //@Field("time") String time, - //@Field("data") String data, - //@Field("category") String category, - //@Field("location") String location, - //@Field("title") String title, - //@Field("summary") String summary - //); + @FormUrlEncoded + @POST("voicememos") + Call postVoicememos( + @Field("uid") String uid, + @Field("token") String token, + @Field("time") String time, + @Field("data") String data, + @Field("location") String location, + @Field("title") String title, + @Field("summary") String summary + ); //指定された投稿の情報を取得 //@GET("voicememos/{vid}") - //Call VoicememosDetail( + //Call voicememosDetail( //@Path("vid") String vid //); //ボイスメモの削除 //@DELETE("voicemomos/{vid}") - //Call VoicememosDelete( + //Call voicememosDelete( //@Path("vid") String vid //); //編集に必要な情報を取得 //@GET("voicememos/{vid}/edit") - //Call VoicememosEdit( + //Call voicememosEdit( //@Path("vid") String vid //); //投稿の修正 //@PUT("voicememos/{vid}/edit") - //Call VoicememosEditFix( + //Call voicememosEditFix( //@Path("vid") String vid, //@Field("new_category") String new_category, //@Field("new_title") String new_title,