diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle b/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle
index 412ea2a..31e0fda 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle
@@ -16,6 +16,8 @@ buildscript {
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
+
+
repositories {
maven { url 'https://maven.fabric.io/public' }
maven { url "https://dl.bintray.com/hani-momanii/maven" }
@@ -67,6 +69,10 @@ android {
abortOnError false
disable 'InvalidPackage'
}
+
+ dexOptions {
+ javaMaxHeapSize "12g"
+ }
}
dependencies {
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
index ad07d71..6587dee 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
@@ -8,6 +8,7 @@
+
-
@@ -63,7 +63,9 @@
android:theme="@style/AppTheme.NoActionBar"
android:screenOrientation="portrait"
/>
-
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerActivity.java
index b82680b..43805a0 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerActivity.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerActivity.java
@@ -41,14 +41,14 @@ public class FilePickerActivity extends BaseFilePickerActivity implements
protected void initView() {
Intent intent = getIntent();
if (intent != null) {
- if(getSupportActionBar()!=null)
+ if(getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ }
ArrayList selectedPaths = intent.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA);
type = intent.getIntExtra(FilePickerConst.EXTRA_PICKER_TYPE, FilePickerConst.MEDIA_PICKER);
if(selectedPaths!=null) {
-
if (PickerManager.getInstance().getMaxCount() == 1) {
selectedPaths.clear();
}
@@ -59,8 +59,9 @@ public class FilePickerActivity extends BaseFilePickerActivity implements
PickerManager.getInstance().add(selectedPaths, FilePickerConst.FILE_TYPE_DOCUMENT);
}
}
- else
+ else {
selectedPaths = new ArrayList<>();
+ }
setToolbarTitle(PickerManager.getInstance().getCurrentCount());
openSpecificFragment(type, selectedPaths);
@@ -72,8 +73,9 @@ public class FilePickerActivity extends BaseFilePickerActivity implements
MediaPickerFragment photoFragment = MediaPickerFragment.newInstance();
FragmentUtil.addFragment(this, R.id.container, photoFragment);
} else {
- if(PickerManager.getInstance().isDocSupport())
+ if(PickerManager.getInstance().isDocSupport()) {
PickerManager.getInstance().addDocTypes();
+ }
DocPickerFragment photoFragment = DocPickerFragment.newInstance(selectedPaths);
FragmentUtil.addFragment(this, R.id.container, photoFragment);
@@ -82,14 +84,15 @@ public class FilePickerActivity extends BaseFilePickerActivity implements
private void setToolbarTitle(int count) {
ActionBar actionBar = getSupportActionBar();
- if(actionBar!=null) {
- if (PickerManager.getInstance().getMaxCount() > 1)
+ if(actionBar != null) {
+ if (PickerManager.getInstance().getMaxCount() > 1) {
actionBar.setTitle(String.format(getString(R.string.attachments_title_text), count, PickerManager.getInstance().getMaxCount()));
- else {
- if (type == FilePickerConst.MEDIA_PICKER)
+ } else {
+ if (type == FilePickerConst.MEDIA_PICKER) {
actionBar.setTitle(R.string.select_photo_text);
- else
+ } else {
actionBar.setTitle(R.string.select_doc_text);
+ }
}
}
@@ -106,43 +109,46 @@ public class FilePickerActivity extends BaseFilePickerActivity implements
public boolean onOptionsItemSelected(MenuItem item) {
int i = item.getItemId();
if (i == R.id.action_done) {
- if (type == FilePickerConst.MEDIA_PICKER)
+ if (type == FilePickerConst.MEDIA_PICKER) {
returnData(PickerManager.getInstance().getSelectedPhotos());
- else
+ } else {
returnData(PickerManager.getInstance().getSelectedFiles());
+ }
return true;
} else if (i == android.R.id.home) {
onBackPressed();
return true;
}
+
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
+
setResult(RESULT_CANCELED);
+
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
- switch (requestCode)
- {
+
+ switch (requestCode) {
case FilePickerConst.REQUEST_CODE_MEDIA_DETAIL:
- if(resultCode== Activity.RESULT_OK)
- {
- if (type == FilePickerConst.MEDIA_PICKER)
+ if(resultCode== Activity.RESULT_OK) {
+ if (type == FilePickerConst.MEDIA_PICKER) {
returnData(PickerManager.getInstance().getSelectedPhotos());
- else
+ } else {
returnData(PickerManager.getInstance().getSelectedFiles());
- }
- else
- {
+ }
+ } else {
setToolbarTitle(PickerManager.getInstance().getCurrentCount());
}
+
break;
}
}
@@ -164,7 +170,8 @@ public class FilePickerActivity extends BaseFilePickerActivity implements
public void onItemSelected() {
setToolbarTitle(PickerManager.getInstance().getCurrentCount());
- if(PickerManager.getInstance().getMaxCount()==1)
+ if(PickerManager.getInstance().getMaxCount() == 1) {
returnData(type == FilePickerConst.MEDIA_PICKER ? PickerManager.getInstance().getSelectedPhotos() : PickerManager.getInstance().getSelectedFiles());
+ }
}
}
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/MediaDetailsActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/MediaDetailsActivity.java
index 59d52da..226a067 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/MediaDetailsActivity.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/MediaDetailsActivity.java
@@ -42,7 +42,6 @@ public class MediaDetailsActivity extends BaseFilePickerActivity implements File
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, R.layout.activity_media_details);
-
}
@Override
@@ -66,8 +65,8 @@ public class MediaDetailsActivity extends BaseFilePickerActivity implements File
}
private void setUpView(ImageDirectory photoDirectory) {
- recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
- emptyView = (TextView) findViewById(R.id.empty_view);
+ recyclerView = findViewById(R.id.recyclerview);
+ emptyView = findViewById(R.id.empty_view);
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3, OrientationHelper.VERTICAL);
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS);
@@ -77,13 +76,14 @@ public class MediaDetailsActivity extends BaseFilePickerActivity implements File
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
- // Log.d(">>> Picker >>>", "dy = " + dy);
+
if (Math.abs(dy) > SCROLL_THRESHOLD) {
mGlideRequestManager.pauseRequests();
} else {
resumeRequestsIfNotDestroyed();
}
}
+
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
resumeRequestsIfNotDestroyed();
@@ -102,13 +102,9 @@ public class MediaDetailsActivity extends BaseFilePickerActivity implements File
mediaStoreArgs.putInt(FilePickerConst.EXTRA_FILE_TYPE, fileType);
if(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) {
- MediaStoreHelper.getPhotoDirs(this, mediaStoreArgs,
- dirs -> updateList(dirs));
- }
- else if(fileType==FilePickerConst.MEDIA_TYPE_VIDEO)
- {
- MediaStoreHelper.getVideoDirs(this, mediaStoreArgs,
- dirs -> updateList(dirs));
+ MediaStoreHelper.getPhotoDirs(this, mediaStoreArgs, this::updateList);
+ } else if(fileType==FilePickerConst.MEDIA_TYPE_VIDEO) {
+ MediaStoreHelper.getVideoDirs(this, mediaStoreArgs, this::updateList);
}
}
@@ -118,31 +114,22 @@ public class MediaDetailsActivity extends BaseFilePickerActivity implements File
medias.addAll(dirs.get(i).getMedias());
}
- Collections.sort(medias,new Comparator() {
- @Override
- public int compare(Media a, Media b) {
- return b.getId() - a.getId();
- }
- });
+ Collections.sort(medias, (a, b) -> b.getId() - a.getId());
- if(medias.size()>0) {
+ if(medias.size() > 0) {
emptyView.setVisibility(View.GONE);
recyclerView.setVisibility(View.VISIBLE);
- }
- else {
+ } else {
emptyView.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.GONE);
return;
}
- if(photoGridAdapter!=null)
- {
+ if(photoGridAdapter!=null) {
photoGridAdapter.setData(medias);
photoGridAdapter.notifyDataSetChanged();
- }
- else
- {
- photoGridAdapter = new ImageGridAdapter(this, mGlideRequestManager, (ArrayList) medias,PickerManager.getInstance().getSelectedPhotos(),false, this);
+ } else {
+ photoGridAdapter = new ImageGridAdapter(this, mGlideRequestManager, medias,PickerManager.getInstance().getSelectedPhotos(),false, this);
recyclerView.setAdapter(photoGridAdapter);
}
@@ -175,6 +162,7 @@ public class MediaDetailsActivity extends BaseFilePickerActivity implements File
onBackPressed();
return true;
}
+
return super.onOptionsItemSelected(item);
}
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/FileListAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/FileListAdapter.java
index 5eda8d9..099cf57 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/FileListAdapter.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/FileListAdapter.java
@@ -46,20 +46,10 @@ public class FileListAdapter extends SelectableAdapter onItemClicked(document,holder));
holder.checkBox.setOnCheckedChangeListener(null);
- holder.checkBox.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- onItemClicked(document,holder);
- }
- });
+ holder.checkBox.setOnClickListener(view -> onItemClicked(document,holder));
holder.checkBox.setChecked(isSelected(document));
@@ -81,10 +71,11 @@ public class FileListAdapter extends SelectableAdapter medias, ArrayList selectedPaths, boolean showCamera, FileAdapterListener photoGridAdapterListener) {
@@ -47,7 +48,7 @@ public class ImageGridAdapter extends SelectableAdapter extends RecyclerView.Adapter implements Selectable {
private List items;
- protected List selectedPhotos;
+ private List selectedPhotos;
- public SelectableAdapter(List items, List selectedPaths) {
+ SelectableAdapter(List items, List selectedPaths) {
this.items = items;
selectedPhotos = new ArrayList<>();
@@ -65,7 +65,7 @@ public abstract class SelectableAdapter getItems()
+ List getItems()
{
return items;
}
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java
index 00ce2f2..77045de 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java
@@ -11,6 +11,7 @@ import de.beyondsoft.ownchat.di.InjectionHelper;
import de.beyondsoft.ownchat.filepicker.FilePickerBuilder;
import de.beyondsoft.ownchat.filepicker.FilePickerConst;
import de.beyondsoft.ownchat.filepicker.utils.Orientation;
+import de.beyondsoft.ownchat.utils.ui.TouchableImageView;
import de.beyondsoft.ownchat.model.Group;
import de.beyondsoft.ownchat.model.Message;
import de.beyondsoft.ownchat.page.common.RuntimePermissionActivity;
@@ -22,7 +23,6 @@ import de.beyondsoft.ownchat.utils.Constants;
import de.beyondsoft.ownchat.utils.EndlessScrollListener;
import de.beyondsoft.ownchat.utils.FileUtils;
import de.beyondsoft.ownchat.utils.SystemUtils;
-import de.beyondsoft.ownchat.utils.Utils;
import de.beyondsoft.ownchat.utils.ui.EmptyLayout;
import org.greenrobot.eventbus.EventBus;
@@ -34,9 +34,11 @@ import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Rect;
+import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
+import android.os.CountDownTimer;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
@@ -50,15 +52,24 @@ import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SimpleItemAnimator;
import android.text.Editable;
import android.text.TextUtils;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
import android.view.ViewTreeObserver;
+import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
+import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
+import java.io.IOException;
+import java.text.DecimalFormat;
import java.util.ArrayList;
+import java.util.Locale;
import javax.inject.Inject;
import javax.inject.Named;
@@ -121,6 +132,10 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
@Named(AppPrefsConstants.USER_ID)
LongPreference mUserIdPreference;
+ @Inject
+ @Named(AppPrefsConstants.UPLOAD_MAX_SIZE)
+ LongPreference mUploadMaxSize;
+
@Inject
ChatPresenter mChatPresenter;
@@ -143,6 +158,7 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
protected EndlessScrollListener mEndlessScrollListener;
protected BaseChatAdapter mBaseChatAdapter;
private Snackbar mSnackbar;
+ MediaRecorder mMediaRecorder;
@Inject
@Named(AppPrefsConstants.CHAT_OPENED)
@@ -308,7 +324,7 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
@OnClick(R.id.chat_attachment)
void attachmentClicked() {
- requestAppPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
+ requestAppPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO},
R.string.permission_storage_explained,
STORAGE_REQUEST_CODE,
this::selectFile);
@@ -330,17 +346,25 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
mSendMessageImageView.setEnabled(!TextUtils.isEmpty(editable.toString()) && editable.toString().trim().length() > 0);
}
+ private String mAudioFilePath;
private void selectFile(int requestCode) {
final String[] zipFileTypes = {".zip", ".rar", ".7z"};
final String[] pdfFileTypes = {".pdf"};
final String[] docFileTypes = {".txt", ".doc", ".xls", ".docx", ".xlsx", ".odt"};
-
final Dialog dialog = new Dialog(this);
- dialog.setContentView(R.layout.file_chooser_dialog);
+ dialog.setContentView(R.layout.dialog_file_chooser);
+
+ Window window = dialog.getWindow();
+ WindowManager.LayoutParams layoutParams = window.getAttributes();
+ layoutParams.dimAmount = 0;
+ layoutParams.gravity = Gravity.BOTTOM;
+ window.setAttributes(layoutParams);
ImageView attachFromGalleryImageView = dialog.findViewById(R.id.attachFromGalleryBtn);
ImageView attachDocumentImageView = dialog.findViewById(R.id.attachDocumentBtn);
+ TouchableImageView attachRecordAudioImageView = dialog.findViewById(R.id.attachRecordAudioBtn);
+ TextView limitTextView = dialog.findViewById(R.id.audioRecordingLimitTextView);
attachDocumentImageView.setOnClickListener(v -> {
FilePickerBuilder.getInstance().setMaxCount(1)
@@ -367,9 +391,104 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
dialog.dismiss();
});
+ final long duration = (mUploadMaxSize.get() / 256000L) * 1000;
+ CountDownTimer countDownTimer = new CountDownTimer(duration, 10) {
+ @Override
+ public void onTick(long millisecondsUntilFinished) {
+ limitTextView.setText(String.format(Locale.getDefault(), "%.2fs", (double) (millisecondsUntilFinished / 1000.0)));
+ }
+
+ @Override
+ public void onFinish() {
+ attachRecordAudioImageView.setImageResource(R.mipmap.ic_file_dialog_record_audio);
+ limitTextView.setVisibility(View.INVISIBLE);
+ limitTextView.setText("");
+ attachDocumentImageView.setVisibility(View.VISIBLE);
+ attachFromGalleryImageView.setVisibility(View.VISIBLE);
+
+ try {
+ mMediaRecorder.stop();
+ } catch (IllegalStateException e) {
+ e.printStackTrace();
+ }
+ }
+ };
+
+
+
+ attachRecordAudioImageView.setOnTouchListener((v, event) -> {
+ try {
+ attachRecordAudioImageView.performClick();
+
+ float prevX = 0f, prevY = 0f;
+
+ switch(event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ attachRecordAudioImageView.setImageResource(R.mipmap.ic_file_dialog_record_audio_pressed);
+ limitTextView.setVisibility(View.VISIBLE);
+ attachDocumentImageView.setVisibility(View.INVISIBLE);
+ attachFromGalleryImageView.setVisibility(View.INVISIBLE);
+
+ mAudioFilePath = FileUtils.generateAudioRecordingFileName(this);
+ setupMediaRecorder(mAudioFilePath);
+
+ countDownTimer.start();
+
+ prevX = event.getX();
+ prevY = event.getY();
+
+ Log.d("ON_TOUCH", "" + prevX + "/" + prevY);
+
+ try {
+ mMediaRecorder.setMaxFileSize(mUploadMaxSize.get());
+ mMediaRecorder.prepare();
+ mMediaRecorder.start();
+ } catch (IllegalStateException | IOException e) {
+ e.printStackTrace();
+ }
+
+ return true;
+ case MotionEvent.ACTION_UP:
+ attachRecordAudioImageView.setImageResource(R.mipmap.ic_file_dialog_record_audio);
+
+ countDownTimer.cancel();
+
+ mMediaRecorder.stop();
+
+ if (!mChatPresenter.isAttached()) {
+ mChatPresenter.attachView(this);
+ }
+
+ //mCallback.sendFile(Uri.fromFile(new File(mAudioFilePath)), null);
+
+ dialog.dismiss();
+ return true;
+
+ case MotionEvent.ACTION_MOVE:
+
+ Log.d("ON_TOUCH", "" + prevX + "/" + prevY + " vs current position: " + event.getX() + "/" + event.getY());
+
+ return true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return false;
+ });
+
dialog.show();
}
+ private void setupMediaRecorder(String audioFilePath) {
+ mMediaRecorder = new MediaRecorder();
+ mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
+ mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
+ mMediaRecorder.setAudioEncodingBitRate(32000);
+ mMediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
+ mMediaRecorder.setOutputFile(audioFilePath);
+ }
+
@Override
protected void onResume() {
super.onResume();
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
index 2f6c56f..fcd90e2 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
@@ -34,4 +34,6 @@ public interface Constants {
String TMP_FILE_DIR = "tmp_files";
String HAS_OPEN_CHAT = "has_open_chat";
+
+ String AUDIO_RECORDINGS_DIR = "audio_recordings";
}
\ No newline at end of file
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/FileUtils.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/FileUtils.java
index 2cd522e..75c2f4f 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/FileUtils.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/FileUtils.java
@@ -36,9 +36,14 @@ import java.io.File;
import java.io.FileFilter;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.text.DateFormat;
import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.Comparator;
+import java.util.Date;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
/**
@@ -1237,4 +1242,31 @@ public class FileUtils {
return tmpFile;
}
+
+ public static String generateAudioRecordingFileName(Context context) {
+ String audioDirectoryPath = context.getExternalFilesDir(null) + File.separator + Constants.AUDIO_RECORDINGS_DIR;
+
+ File audioDir = new File(audioDirectoryPath);
+ if(!audioDir.exists()) {
+ audioDir.mkdir();
+ }
+
+ String fileName = "rec_";
+ String fileSuffix = ".m4a";
+
+ Date today = Calendar.getInstance().getTime();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYYmmddHHMMss", Locale.GERMAN);
+
+ fileName += simpleDateFormat.format(today);
+
+ fileName = audioDirectoryPath + File.separator + fileName;
+ String newFileName = fileName;
+
+ int i = 1;
+ while((new File(newFileName + fileSuffix)).exists()) {
+ newFileName = fileName + "_" + i;
+ }
+
+ return newFileName + fileSuffix;
+ }
}
\ No newline at end of file
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/ui/TouchableImageView.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/ui/TouchableImageView.java
new file mode 100644
index 0000000..00e8c3a
--- /dev/null
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/ui/TouchableImageView.java
@@ -0,0 +1,28 @@
+package de.beyondsoft.ownchat.utils.ui;
+
+import android.content.Context;
+import android.support.annotation.Nullable;
+import android.util.AttributeSet;
+
+/**
+ * Created by Lyndon on 15-Nov-2017.
+ */
+
+public class TouchableImageView extends android.support.v7.widget.AppCompatImageView {
+ public TouchableImageView(Context context) {
+ super(context);
+ }
+
+ public TouchableImageView(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public TouchableImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @Override
+ public boolean performClick() {
+ return super.performClick();
+ }
+}
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/dialog_file_chooser.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/dialog_file_chooser.xml
new file mode 100644
index 0000000..c0f2d10
--- /dev/null
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/dialog_file_chooser.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml
deleted file mode 100644
index b445a05..0000000
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/fragment_profile.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/fragment_profile.xml
index a9a2bd5..b535360 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/fragment_profile.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/fragment_profile.xml
@@ -19,7 +19,8 @@
android:layout_height="@dimen/profile_avatar"
android:layout_gravity="center_horizontal"
android:scaleType="centerCrop"
- android:src="@drawable/avatar" />
+ android:src="@drawable/avatar"
+ tools:src="@drawable/sasha_grey"/>
@@ -27,13 +27,13 @@
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_single_chat_right.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_single_chat_right.xml
index b7e1cf0..7fe8b05 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_single_chat_right.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_single_chat_right.xml
@@ -70,14 +70,14 @@
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_record_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_record_audio.png
new file mode 100644
index 0000000..d5e1048
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_record_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_record_audio_pressed.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_record_audio_pressed.png
new file mode 100644
index 0000000..9b08305
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-hdpi/ic_file_dialog_record_audio_pressed.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_record_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_record_audio.png
new file mode 100644
index 0000000..3324bd5
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_record_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_record_audio_pressed.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_record_audio_pressed.png
new file mode 100644
index 0000000..755594e
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-mdpi/ic_file_dialog_record_audio_pressed.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_record_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_record_audio.png
new file mode 100644
index 0000000..4f97e21
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_record_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_record_audio_pressed.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_record_audio_pressed.png
new file mode 100644
index 0000000..7cde8f5
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xhdpi/ic_file_dialog_record_audio_pressed.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_record_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_record_audio.png
new file mode 100644
index 0000000..1fca9d7
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_record_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_record_audio_pressed.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_record_audio_pressed.png
new file mode 100644
index 0000000..da5be38
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxhdpi/ic_file_dialog_record_audio_pressed.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_record_audio.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_record_audio.png
new file mode 100644
index 0000000..efd87fc
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_record_audio.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_record_audio_pressed.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_record_audio_pressed.png
new file mode 100644
index 0000000..6da490c
Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/mipmap-xxxhdpi/ic_file_dialog_record_audio_pressed.png differ
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/colors.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/colors.xml
index 04842b9..0c20164 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/colors.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/colors.xml
@@ -20,4 +20,5 @@
#636363
#515151
#94333232
+ #00000000
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/styles.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/styles.xml
index af69dd8..9107a32 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/styles.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/values/styles.xml
@@ -116,4 +116,10 @@
- 0dp
+
+
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/gradle.properties b/BeWoPlanerChat/bewoplaner-chat-android/gradle.properties
index 015fe44..aa95255 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/gradle.properties
+++ b/BeWoPlanerChat/bewoplaner-chat-android/gradle.properties
@@ -15,3 +15,5 @@ org.gradle.jvmargs=-Xmx1536m
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
+org.gradle.parallel=true
+org.gradle.deamon=true
\ No newline at end of file