@Override public void onBindViewHolder(OptagelseViewHolder holder, int position) { Optagelse optagelse = trin.svar.optagelser.get(position); holder.billedetekstUnderOpdatering = true; holder.billedetekst.setText(trin.svar.optagelser.get(position).tekst); holder.billedetekstUnderOpdatering = false; holder.billede.setImageDrawable(null); // int højde = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, // rod.getResources().getDisplayMetrics()); // int bredde = (int) (højde*optagelse.aspektRatio); // holder.billede.getLayoutParams().height = højde; // holder.billede.getLayoutParams().width = bredde==0? ViewGroup.LayoutParams.WRAP_CONTENT // : bredde; // Vis billedet. Først prøver vi med lokal URI if (optagelse.lokalUri != null && !optagelse.ignorerLokalUri) { Uri lokalUri = Uri.parse(optagelse.lokalUri); try { // Tjek om den kan læses InputStream stream = App.instans.getContentResolver().openInputStream(lokalUri); stream.close(); Glide.with(rod.getContext()).load(lokalUri).fitCenter().into(holder.billede); return; // Hurra, det gik godt. Hop ud } catch (Exception e) { optagelse.ignorerLokalUri = true; // URI dur ikke på denne maskine, den kommer nok fra en anden, øv bøv Log.d("ignorerLokalUri for optagelse " + position + ": " + e); } } // OK, vi henter den over nettet og cacher den hist og pist String url = optagelse.url; if (optagelse.cloudinary_id != null) { // url = App.cloudinary.url().transformation(new // Transformation().height(højde)).generate(optagelse.cloudinary_id); url = App.cloudinary.url().generate(optagelse.cloudinary_id); // Log.d("cloudinary_id => "+url+ " i stedet for "+optagelse.url); } Glide.with(rod.getContext()).load(url).fitCenter().into(holder.billede); // Picasso.with(rod.getContext()).load(url).resize(bredde,højde).into(holder.billede); }
@Override public void onClick(View v) { if (v.getId() == R.id.galleri) { Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); App.onActivityResultListe.add(this); getActivity().startActivityForResult(i, VÆLG_BILLEDE); } if (v.getId() == R.id.tag_billede) try { Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // Hvis vi vil læse billedet i fuld opløsning fra ekstern lager/SD-kort skal vi give en URI filPåEksterntLager = DiverseIO.opretUnikFilICache("TRIN_" + trin.id, ".jpg"); i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(filPåEksterntLager)); App.onActivityResultListe.add(this); getActivity().startActivityForResult(i, TAG_BILLEDE); } catch (Exception e) { Log.rapporterFejl(e); } }
@Override public void onClick(View v) { if (v == billede) { Optagelse optagelse = trin.svar.optagelser.get(getAdapterPosition()); String fil = getFileLoction(optagelse); Log.d("Fil: " + fil); Intent intent = new Intent(getActivity(), VisningsAktivitet.class); intent.putExtra(VisningsAktivitet.VISNING_TYPE, 1); intent.putExtra(VisningsAktivitet.VISNING_URI, fil); startActivity(intent); } else if (v == slet) { trin.svar.ændretSkalGemmes = true; final int pos = getAdapterPosition(); final Optagelse fjernetOptagelse = trin.svar.optagelser.remove(pos); senestSlettedeOptagelse = fjernetOptagelse; adapter.notifyItemRemoved(pos); Snackbar.make(recyclerView, "Optagelse fjernet", Snackbar.LENGTH_LONG) .setAction( "Fortryd", new View.OnClickListener() { @Override public void onClick(View view) { trin.svar.ændretSkalGemmes = true; trin.svar.optagelser.add(pos, fjernetOptagelse); adapter.notifyItemInserted(pos); recyclerView.smoothScrollToPosition(pos); } }) .show(); /* int pos = getAdapterPosition(); Optagelse o = trin.svar.optagelser.remove(pos); trin.svar.optagelser.add(o); adapter.notifyItemMoved(pos, trin.svar.optagelser.size()-1); */ } else { App.udestår("vis popop med billede"); } }
public static void gemOptagelse(final Trin trin, final Optagelse optagelse) { try { Log.d("gemOptagelse lokalUri=" + optagelse.lokalUri); // Vent til allersidst i eventkøen så animationen kan ses Diverse.udførSidstIHovedtråden( 200, new Runnable() { @Override public void run() { trin.svar.optagelser.add(optagelse); trin.svar.ændretSkalGemmes = true; for (Runnable obs : trin.svar.optagelseTilføjetObservatører) obs.run(); // UploadService.scheduleImageUpload(App.instans.getApplicationContext(), // optagelse.id, optagelse.lokalUri); OploadService2.start(); } }); /* final ContentResolver cr = App.instans.getContentResolver(); BitmapFactory.Options bmOptions = new BitmapFactory.Options(); bmOptions.inJustDecodeBounds = true; FileInputStream is = cr.openAssetFileDescriptor(Uri.parse(optagelse.lokalUri), "r").createInputStream(); BitmapFactory.decodeStream(is, null, bmOptions); is.close(); optagelse.aspektRatio = (float) bmOptions.outWidth / bmOptions.outHeight; App.sætErIGang(true, "cloudinary"); new AsyncTask() { @Override protected Object doInBackground(Object[] params) { try { //uploadParams.put("resource_type", "video"); //uploadParams.put("resource_type", "auto"); FileInputStream is = cr.openAssetFileDescriptor(Uri.parse(optagelse.lokalUri), "r").createInputStream(); Map m = App.cloudinary.uploader().upload(is, ObjectUtils.emptyMap());//ObjectUtils.asMap("public_id", "TRIN_" + trin.id)); is.close(); Log.d("cloudinary map="+m); Log.d("App.cloudinary.signedPreloadedImage(m) "+App.cloudinary.signedPreloadedImage(m)); App.cloudinary.signedPreloadedImage(m); // map={resource_type=image, etag=441f1307c34a040d0746927f36bca2df, signature=9e0b8cd6d7956176b096e489ab916fab87568f63, url=http://res.cloudinary.com/vuc/image/upload/v1450452511/sample_remote.jpg, height=480, secure_url=https://res.cloudinary.com/vuc/image/upload/v1450452511/sample_remote.jpg, format=jpg, public_id=sample_remote, version=1450452511, original_filename=file, width=640, created_at=2015-12-18T15:28:31Z, tags=[], bytes=114102, type=upload} // map={resource_type=image, etag=52012cde897d0095befa9809accc07a9, signature=2099119561879b4eb6be40af3d3f6502aabdb4e4, url=http://res.cloudinary.com/vuc/image/upload/v1452530538/rqlpprmolxx9gckaza3o.jpg, height=480, secure_url=https://res.cloudinary.com/vuc/image/upload/v1452530538/rqlpprmolxx9gckaza3o.jpg, format=jpg, public_id=rqlpprmolxx9gckaza3o, version=1452530538, original_filename=file, width=640, created_at=2016-01-11T16:42:18Z, tags=[], bytes=96149, type=upload} return m; } catch (Exception e) { App.langToast("Det lykkedes ikke at oploade billedet.\n"+e); e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { App.sætErIGang(false, "cloudinary"); if (o instanceof Map) { Map m = (Map) o; optagelse.url = (String) m.get("secure_url"); if (App.udvikling) App.kortToast("optagelse.url="+optagelse.url); optagelse.cloudinary_id = (String) m.get("public_id"); trin.svar.ændretSkalGemmes = true; Fb.gemSvarForEmne(trin.emne); } } }.execute(); */ } catch (Exception e) { Log.rapporterFejl(e); } }
@Override public void onClick(View v) { if (v.getId() == R.id.supplerende_info) { startActivity(new Intent(getActivity(), IndstillingerAkt.class)); return; } try { final Overførsler.Overførsel u = (Overførsler.Overførsel) v.getTag(); if (v.getId() == R.id.startStop) { Log.d(" startStopKnap " + u); if (u.getStatus() == PAUSET) { u.setStatus(VENTER); } else { u.setStatus(PAUSET); u.oploadtråd.interrupt(); App.kortToast("u.oploadtråd.interrupt()!!"); } u.trin.svar.ændretSkalGemmes = true; Fb.gemSvarForEmne(u.trin.emne); run(); } else if (v.getId() == R.id.slet) { new AlertDialog.Builder(getActivity()) .setTitle("Slet optagelse?") .setMessage("Vil slette optagelsen? Den bliver fjernet fra din besvarelse.") .setPositiveButton( android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface d, int w) { if (u.getStatus() != PAUSET) { u.setStatus(PAUSET); if (u.oploadtråd != null) u.oploadtråd.interrupt(); } u.trin.svar.ændretSkalGemmes = true; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { // Animeret fjernelse af listeelement int pos = liste.indexOf(u); final View le = listView.getChildAt(pos - listView.getFirstVisiblePosition()); le.animate() .alpha(0) .translationX(le.getWidth()) .withEndAction( new Runnable() { @Override public void run() { le.setAlpha(1); le.setTranslationX(0); u.trin.svar.optagelser.remove(u.optagelse); OverførslerFrag.this.run(); Fb.gemSvarForEmne(u.trin.emne); } }); } else { u.trin.svar.optagelser.remove(u.optagelse); OverførslerFrag.this.run(); Fb.gemSvarForEmne(u.trin.emne); } } }) .setNegativeButton(android.R.string.cancel, null) .show(); } else { Log.rapporterFejl("Ugyldigt valg"); } } catch (Exception e) { Log.rapporterFejl(e); } }