1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Wie kann ich auf Verzeichnisse assert bzw. raw zugreifen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von AndyS11, 26.02.2012.

  1. AndyS11, 26.02.2012 #1
    AndyS11

    AndyS11 Threadstarter Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    0
    Registriert seit:
    26.02.2012
    So, sitze jetzt schon über 5 Stunden an diesem behinderten Problem.

    Ich habe im Verzeihnis raw 5 Videos. Mein ziel ist es nach dem richtigen Video zu suchen.

    EIngabe wird als Text eingegeben und gesucht wird dann nach dem video welches diesen Text im Titel beinhaltet.

    Die AUsgabe wird in ein Textview ausgegeben.

    Wie greife ich auf die Paths der Verzeihnisse zu?

    Code:
    public void sucheStarten(View v){
            if(v.getId() == R.id.btn_suchen){
                AutoCompleteTextView txView = (AutoCompleteTextView) findViewById(R.id.txv_eingabe);
                String text = txView.getText().toString();
                TextView tv_ausgabe = (TextView) findViewById(R.id.txv_ausgabe);
                
                File f = new File("????");
                tv_ausgabe.append(String.valueOf(f.list().length));
            }
        }
    
    Habe schon edliche Möglichkeiten versucht, aber keine hat funktioniert. So langsam gehen mir diese blöden Android Klassen am Nerv muss ich sagen.
     
  2. swordi, 26.02.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
  3. AndyS11, 26.02.2012 #3
    AndyS11

    AndyS11 Threadstarter Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    0
    Registriert seit:
    26.02.2012
    Wie bekomme ich vom Asset Ordner den String Path den ich für das Anzeigen des Viedos im VideoView benötige??
     
  4. AndyS11, 26.02.2012 #4
    AndyS11

    AndyS11 Threadstarter Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    0
    Registriert seit:
    26.02.2012
    Uri path = Uri.fromFile(new File("assets/"+VIDEO_NAME));

    gibt mir zwar den richtigen Pfad zurück, aber der VideoView sagt Video kann nicht wiedergegeben werden.

    Sonst nix.

    Wieso kann das Video nicht widergegeben werden?
     
  5. swordi, 26.02.2012 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    kann hier wer hellsehen ?

    schau in den logcat - zeig uns deinen code - was ist das für ein video

    wenn du hilfe willst, musst dir schon die mühe machen und hier paar infos posten.
     
  6. AndyS11, 27.02.2012 #6
    AndyS11

    AndyS11 Threadstarter Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    0
    Registriert seit:
    26.02.2012
    Code:
    02-27 18:02:00.965: I/System.out(30225): debugger has settled (1429)
    02-27 18:02:01.035: D/dalvikvm(30225): GC_EXTERNAL_ALLOC freed 43K, 50% free 2706K/5379K, external 0K/0K, paused 28ms
    02-27 18:02:01.200: D/CLIPBOARD(30225): Hide Clipboard dialog at Starting input: finished by someone else... !
    02-27 18:02:06.625: E/Surface(30225): Surface::init token -2 identity 2367
    02-27 18:02:06.630: E/MediaPlayer(30225): setDataSource JAVA path 
    02-27 18:02:06.630: E/MediaPlayer-JNI(30225): setDataSource: outside path in JNI is ?x@
    02-27 18:02:06.640: E/MediaPlayer(30225): In prepareAsync
    02-27 18:02:06.650: W/MediaPlayer(30225): info/warning (1, 26)
    02-27 18:02:06.650: E/MediaPlayer(30225): error (-4, -4)
    02-27 18:02:06.755: I/MediaPlayer(30225): Info (1,26)
    02-27 18:02:06.755: E/MediaPlayer(30225): Error (-4,-4)
    02-27 18:02:06.755: D/VideoView(30225): Error: -4,-4
    02-27 18:02:06.800: D/dalvikvm(30225): GC_EXTERNAL_ALLOC freed 74K, 47% free 2913K/5447K, external 518K/518K, paused 18ms
    02-27 18:02:06.870: W/IInputConnectionWrapper(30225): finishComposingText on inactive InputConnection
    02-27 18:02:06.870: W/IInputConnectionWrapper(30225): finishComposingText on inactive InputConnection
    02-27 18:02:15.959: W/KeyCharacterMap(30225): No keyboard for id 0
    02-27 18:02:15.959: W/KeyCharacterMap(30225): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    02-27 18:02:23.985: E/Surface(30225): Surface::init token -2 identity 2378
    02-27 18:02:23.990: E/MediaPlayer(30225): setDataSource JAVA path 
    02-27 18:02:23.990: E/MediaPlayer-JNI(30225): setDataSource: outside path in JNI is ?x@
    02-27 18:02:23.995: E/MediaPlayer(30225): In prepareAsync
    02-27 18:02:24.010: W/MediaPlayer(30225): info/warning (1, 26)
    02-27 18:02:24.015: E/MediaPlayer(30225): error (-4, -4)
    02-27 18:02:24.075: I/MediaPlayer(30225): Info (1,26)
    02-27 18:02:24.075: E/MediaPlayer(30225): Error (-4,-4)
    02-27 18:02:24.075: D/VideoView(30225): Error: -4,-4
    
    Das ist ein avi Video. Auch 3gp Filme funktionieren nicht.

    Wenn ich jedoch die Filme vom raw Ordner auslese funktioniert es bei beiden sehr gut!

    Jedoch möchte ich aus anderen technischen Gründen und zur Übung den Asset nutzen.

    Code habe ich schon gepostet:

    Code:
    package andyS.at;
    
    import java.io.File;
    import java.io.IOException;
    
    import android.app.Activity;
    import android.content.res.AssetFileDescriptor;
    import android.content.res.AssetManager;
    import android.net.Uri;
    import android.os.Bundle;
    import android.widget.MediaController;
    import android.widget.Toast;
    import android.widget.VideoView;
    
    public class Video extends Activity{
        
        @Override
        protected void onCreate(Bundle savedInstanceState){
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.video);
            
            Uri path = Uri.fromFile(new File("assets/"+ SpracheNeuActivity.VIDEO_NAME)); 
            
            VideoView vv = (VideoView) findViewById(R.id.videoView1);
            vv.setMediaController(new MediaController(this));
            Toast.makeText(this, path.toString(), Toast.LENGTH_LONG).show();
            vv.setVideoPath(String.valueOf(path));
            vv.requestFocus();
            vv.start();
                    
        }
        
    }
    
    
    Der übergebene Pfad ist richtig weil ich ihn ja mit einem Toast anzeige und er passt!!

    Danke für deine Hilfe bisher;)
     
  7. swordi, 27.02.2012 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wenn es im asset ordner nicht geht und im raw schon, dann lass es im raw ordner

    soweit ich weiß haben dateien im asset ordner eine maximale größe - eventuell sind deine dateien einfach zu groß

    was ist da der größere übungseffekt ob du es vom raw oder vom asset ordner liest? ist ja genau das gleiche
     
  8. AndyS11, 27.02.2012 #8
    AndyS11

    AndyS11 Threadstarter Neuer Benutzer

    Beiträge:
    11
    Erhaltene Danke:
    0
    Registriert seit:
    26.02.2012
    Ich schaffs dadurch nicht dynamisch das gesuchte Video anzuzeigen, da ich den Path so angeben muss, dass am Ende R.raw.VideoName.

    Ich kann also nicht den gesuchten Namen zu einem gesamten Pathnamen hinzufügen.

    So langsam glaube ich meine Applikation ist in Java generell nicht realisierbar. Hm naja. Komisch die ganze sache, obwohl es eigentlich so einfach sein sollte, schon eine große Hürde.

    Also: Wie muss ich den Path schreiben wenn ich ihn nur aus Strings zusammensetzten will und es auch funktioniert?

    Jetzt mache ich es so, aber es funktioniert nicht:

    Code:
    vv.setVideoURI(Uri.parse("android.resource://"+getPackageName()+ "/raw/" + SpracheNeuActivity.VIDEO_NAME));
    
    Sonst irgendwelche Ideen?
     

Diese Seite empfehlen