mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-25 02:18:23 +01:00
Capture images and videos from camera when click capture fab in PostImageActivity and PostVideoActivity. Go to user's profile after sending image post.
This commit is contained in:
parent
fcff7784c9
commit
469542fb68
@ -101,6 +101,17 @@
|
||||
android:name=".ViewUserDetailActivity"
|
||||
android:parentActivityName=".MainActivity"
|
||||
android:theme="@style/AppTheme.NoActionBarWithTranslucentWindow" />
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.provider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths">
|
||||
</meta-data>
|
||||
</provider>
|
||||
</application>
|
||||
|
||||
</manifest>
|
@ -68,9 +68,11 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
||||
initialParams = params;
|
||||
initialCallback = callback;
|
||||
|
||||
initialLoadStateLiveData.postValue(NetworkState.LOADING);
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> bestPost = api.getUserComments(username, null);
|
||||
bestPost.enqueue(new Callback<String>() {
|
||||
Call<String> commentsCall = api.getUserComments(username, null);
|
||||
commentsCall.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
@ -117,6 +119,8 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
||||
this.params = params;
|
||||
this.callback = callback;
|
||||
|
||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADING);
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> bestPost = api.getUserComments(username, params.key);
|
||||
bestPost.enqueue(new Callback<String>() {
|
||||
|
@ -113,7 +113,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
||||
mProgressBar.setVisibility(View.GONE);
|
||||
} else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
||||
mFetchCommentInfoLinearLayout.setOnClickListener(view -> mCommentViewModel.retry());
|
||||
showErrorView(R.string.load_posts_error);
|
||||
showErrorView(R.string.load_comments_failed);
|
||||
} else {
|
||||
mFetchCommentInfoLinearLayout.setVisibility(View.GONE);
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
|
@ -6,6 +6,8 @@ import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.provider.MediaStore;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
@ -13,6 +15,7 @@ import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@ -20,6 +23,7 @@ import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.core.content.FileProvider;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.RequestManager;
|
||||
@ -30,7 +34,8 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.libRG.CustomTextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@ -61,6 +66,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
||||
|
||||
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0;
|
||||
private static final int PICK_IMAGE_REQUEST_CODE = 1;
|
||||
private static final int CAPTURE_IMAGE_REQUEST_CODE = 2;
|
||||
|
||||
@BindView(R.id.coordinator_layout_post_image_activity) CoordinatorLayout coordinatorLayout;
|
||||
@BindView(R.id.subreddit_icon_gif_image_view_post_image_activity) GifImageView iconGifImageView;
|
||||
@ -228,7 +234,19 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
||||
});
|
||||
|
||||
captureFab.setOnClickListener(view -> {
|
||||
|
||||
Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
if(pictureIntent.resolveActivity(getPackageManager()) != null) {
|
||||
try {
|
||||
imageUri = FileProvider.getUriForFile(this, "ml.docilealligator.infinityforreddit.provider",
|
||||
File.createTempFile("temp_img", ".jpg", getExternalFilesDir(Environment.DIRECTORY_PICTURES)));
|
||||
pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
|
||||
startActivityForResult(pictureIntent, CAPTURE_IMAGE_REQUEST_CODE);
|
||||
} catch (IOException ex) {
|
||||
Snackbar.make(coordinatorLayout, R.string.error_creating_temp_file, Snackbar.LENGTH_SHORT).show();
|
||||
}
|
||||
} else {
|
||||
Snackbar.make(coordinatorLayout, R.string.no_camera_available, Snackbar.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
selectFromLibraryFab.setOnClickListener(view -> {
|
||||
@ -330,21 +348,12 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
ParsePost.parsePosts(response.body(), mLocale, 1,
|
||||
new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPostData, String lastItem) {
|
||||
Intent intent = new Intent(PostImageActivity.this, ViewPostDetailActivity.class);
|
||||
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_DATA, newPostData.get(0));
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onParsePostsListingFail() {
|
||||
startViewUserDetailActivity();
|
||||
}
|
||||
});
|
||||
Toast.makeText(PostImageActivity.this, R.string.image_is_processing, Toast.LENGTH_SHORT).show();
|
||||
Intent intent = new Intent(PostImageActivity.this, ViewUserDetailActivity.class);
|
||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY,
|
||||
mUserInfoSharedPreferences.getString(SharedPreferencesUtils.USER_KEY, ""));
|
||||
startActivity(intent);
|
||||
finish();
|
||||
} else {
|
||||
startViewUserDetailActivity();
|
||||
}
|
||||
@ -435,6 +444,10 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
||||
imageUri = data.getData();
|
||||
loadImage();
|
||||
}
|
||||
} else if(requestCode == CAPTURE_IMAGE_REQUEST_CODE) {
|
||||
if(resultCode == RESULT_OK) {
|
||||
loadImage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.provider.MediaStore;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
@ -62,6 +63,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
||||
|
||||
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0;
|
||||
private static final int PICK_VIDEO_REQUEST_CODE = 1;
|
||||
private static final int CAPTURE_VIDEO_REQUEST_CODE = 2;
|
||||
|
||||
@BindView(R.id.coordinator_layout_post_video_activity) CoordinatorLayout coordinatorLayout;
|
||||
@BindView(R.id.subreddit_icon_gif_image_view_post_video_activity) GifImageView iconGifImageView;
|
||||
@ -233,7 +235,10 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
||||
});
|
||||
|
||||
captureFab.setOnClickListener(view -> {
|
||||
|
||||
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
|
||||
if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
|
||||
startActivityForResult(takeVideoIntent, CAPTURE_VIDEO_REQUEST_CODE);
|
||||
}
|
||||
});
|
||||
|
||||
selectFromLibraryFab.setOnClickListener(view -> {
|
||||
@ -416,6 +421,9 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
||||
videoUri = data.getData();
|
||||
loadImage();
|
||||
}
|
||||
} else if (requestCode == CAPTURE_VIDEO_REQUEST_CODE) {
|
||||
videoUri = data.getData();
|
||||
loadImage();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,8 @@
|
||||
android:id="@+id/progress_bar_view_post_detail_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center" />
|
||||
android:layout_gravity="center"
|
||||
android:visibility="gone" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view_view_post_detail"
|
||||
|
@ -117,8 +117,11 @@
|
||||
<string name="select_from_gallery">Select a picture</string>
|
||||
<string name="select_again">Select again</string>
|
||||
<string name="error_getting_image">Error getting the image</string>
|
||||
<string name="no_camera_available">No camera app available</string>
|
||||
<string name="error_creating_temp_file">Error creating temp file</string>
|
||||
|
||||
<string name="video_is_processing">Video is processing. Please wait.</string>
|
||||
<string name="image_is_processing">Image is processing. Please wait.</string>
|
||||
|
||||
<string name="flair">Flair</string>
|
||||
<string name="spoiler">Spoiler</string>
|
||||
|
5
app/src/main/res/xml/file_paths.xml
Normal file
5
app/src/main/res/xml/file_paths.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<paths xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<external-path name="image_temp"
|
||||
path="Android/data/ml.docilealligator.infinityforreddit/files/Pictures" />
|
||||
</paths>
|
Loading…
Reference in New Issue
Block a user