public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
public static final String ANONYMOUS = "anonymous";
public static final int RC_SIGN_IN = 1;
private static final int RC_PHOTO_PICKER = 2;
private String mUsername;
// Firebase instance variables
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mMessagesDatabaseReference;
private ChildEventListener mChildEventListener;
private FirebaseAuth mFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
private FirebaseStorage mFirebaseStorage;
private StorageReference mChatPhotosStorageReference;
private FirebaseRemoteConfig mFirebaseRemoteConfig;
private SeekBar seekBar;
private RecyclerView recyclerView;
private FloatingActionButton floatingActionButton;
NotificationCompat.Builder notificationBuilder;
VideoAdapter videoAdapter;
List<Video> videoList;
NotificationManager notificationManager;
AlertDialog.Builder alertDialog;
EditText input;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUsername = ANONYMOUS;
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
floatingActionButton = (FloatingActionButton) findViewById(R.id.floatingactionbutton);
videoList = new ArrayList();
// Initialize Firebase components
mFirebaseDatabase = FirebaseDatabase.getInstance();
mFirebaseAuth = FirebaseAuth.getInstance();
mFirebaseStorage = FirebaseStorage.getInstance();
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
seekBar = (SeekBar) findViewById(R.id.seekbar);
mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("videomessages");
mChatPhotosStorageReference = mFirebaseStorage.getReference().child("videos");
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
onSignedInInitialize(user.getDisplayName());
} else {
// User is signed out
onSignedOutCleanup();
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setIsSmartLockEnabled(false)
.setProviders(
AuthUI.EMAIL_PROVIDER,
AuthUI.GOOGLE_PROVIDER)
.build(),
RC_SIGN_IN);
}
}
};
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("video/*");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);
alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle("Upload");
alertDialog.setMessage("Enter Name");
input = new EditText(MainActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
input.setLayoutParams(lp);
alertDialog.show();
}
});
attachDatabaseReadListener();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
if (resultCode == RESULT_OK) {
// Sign-in succeeded, set up the UI
Toast.makeText(this, "Signed in!", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED) {
// Sign in was canceled by the user, finish the activity
Toast.makeText(this, "Sign in canceled", Toast.LENGTH_SHORT).show();
finish();
}
} else if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
new MyAsyncTask().execute(selectedImageUri);
// Get a reference to store file at chat_photos/<FILENAME>
}
;
}
@Override
protected void onResume() {
super.onResume();
mFirebaseAuth.addAuthStateListener(mAuthStateListener);
}
@Override
protected void onPause() {
super.onPause();
if (mAuthStateListener != null) {
mFirebaseAuth.removeAuthStateListener(mAuthStateListener);
}
}
private void onSignedInInitialize(String username) {
mUsername = username;
attachDatabaseReadListener();
}
private void onSignedOutCleanup() {
mUsername = ANONYMOUS;
}
private void attachDatabaseReadListener() {
mMessagesDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
videoList.clear();
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
Video postSnapshotValue = postSnapshot.getValue(Video.class);
if (!videoList.contains(postSnapshotValue)) {
videoList.add(postSnapshotValue);
Log.i(TAG, "onDataChange: " + videoList);
}
}
videoAdapter = new VideoAdapter(videoList, MainActivity.this);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
recyclerView.setAdapter(videoAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public class MyAsyncTask extends AsyncTask<Uri, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(final Uri... params) {
final StorageReference photoRef = mChatPhotosStorageReference.child(params[0].getLastPathSegment());
alertDialog.setView(input);
alertDialog.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
photoRef.putFile(params[0])
.addOnSuccessListener(MainActivity.this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// When the image has successfully uploaded, we get its download URL
// progressBar.setVisibility(View.VISIBLE);
// Uri downloadUrl = taskSnapshot.getDownloadUrl();
//String nameUrl=taskSnapshot.getMetadata().getName();
String TempImageName = input.getText().toString().trim();
Video video = new Video(TempImageName);
mMessagesDatabaseReference.push().setValue(video);
}
}).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
int progress = (int) ((100 * taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount());
seekBar.setProgress(progress);
notificationBuilder = new NotificationCompat.Builder(getApplicationContext())
.setColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary))
.setSmallIcon(R.mipmap.ic_launcher)
.setContentText("Download in progress")
.setContentIntent(contentIntent(getApplicationContext()))
.setAutoCancel(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
}
notificationManager = (NotificationManager)
getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
for (int incr = progress; incr <= 100; incr += 5) {
notificationBuilder.setProgress(100, progress, false);
notificationManager.notify(20, notificationBuilder.build());
}
if(progress>=100){
notificationBuilder.setContentText("Download complete").setProgress(0, 0, false);
notificationManager.notify(20, notificationBuilder.build());
}
}
});
}});
alertDialog.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
return null;
}
@Override
protected void onPostExecute(Void integer) {
super.onPostExecute(integer);
// Do the "lengthy" operation 20 times
}
}
private PendingIntent contentIntent(Context context) {
Intent startActivityIntent = new Intent(context, MainActivity.class);
return PendingIntent.getActivity(
context,
0,
startActivityIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
}
}
up Ich habe eine schwebende Wirkung button.On Klick davon, präsentiere ich alle Videodateien zeige, in Benutzer-phone.When einer bestimmten Datei ausgewählt wird, um es zu firebase
Speicher hochgeladen wird. aber ich möchte mit einem EdiText
mit den Namen der Datei Benutzer choose.Then Benutzer eine Benachrichtigung Dialog zeigen, können Sie den Namen der Datei bearbeiten und auf Klick auf Schaltfläche ja die Datei-Upload sollte start.I zeige, meine alertdialog
in schwebenden Aktionstaste. Ich kann Alarmdialog in AsyncTask
nicht zeigen, da es Fehler gibt. So , was ich will, ist, eine AlertDialog
anzeigen, wenn die Benutzer eine Datei auf Klick wählt Aktion button.The schwimmender EditText
von AlertDialog
sollte den Namen der Datei haben, die Benutzer auswählen, und Benutzer können sie bearbeiten, wenn er/sie will und auf Klick ja Schaltfläche nur die Datei sollte auf firebase
Speicher hochgeladen werden.Alertdialog zeigen pflegt meine EditText
auszuführen, wie den Namen der Datei erhalten i wählen, in EditText die Warnmeldung? – Pritish
Sie erhalten diese Daten in der Methode onActivityResult, also verschieben Sie die Erstellung des Alarmdialogs dorthin –