0

それ以来、私はコードを学ぼうとしています。私はそれらのサウンドボードの1つを作ることにしました。それ以来、私はそれらを自分の電話に入れるのが好きです。私はこれらのソースコードをグーグルで探してきました。サウンドボード プロジェクトの主要なソース コードを 1 つ見つけました。そして、これは本当に他の誰もが話している主なもののようです. 次に、サウンドボードのサウンドを着信音として設定する方法と、通知の方法を学びたいと思いました。私は何時間もグーグルで調べていて、私にとってはうまくいかない同じコードに出くわしました。サウンドを着信音などに設定するためのコードがわかりません。運が悪いので、最初から試してみました。

このトピックについて他に何も見つかりません。私を助けてください。同じ情報を見つけるためだけに、私はすべてグーグルで検索しました。

Android/Java で着信音または通知としてサウンドを設定するサウンドボードをプログラムできるようにしたいと考えています。

ありがとう。

私は私が推測するいくつかのコードを入れるべきだと思います。:) - 私はこれが単純であることを知っていますが、それは私にとても苦労を与え、私は本当にこの部分を知りたいです. メニューは表示されますが、sdcard ファイルに保存されません。ここJava/Androidで何が起こっているのかわかりません。私はPHPの男です。すべての助けを借りて

            Button btn = (Button) findViewById(R.id.sound1);
            registerForContextMenu(btn);
        }

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
            menu.setHeaderTitle("Set as...");
            menu.add(0, v.getId(), 0, "Ringtone");
            menu.add(0, v.getId(), 0, "Notification");
        }

        @Override
        public boolean onContextItemSelected(MenuItem item) {
            if(item.getTitle()=="Ringtone"){function1(item.getItemId());}
            else if(item.getTitle()=="Notification"){function2(item.getItemId());}
            else {return false;}
        return true;
        }

        public void function1(int id){
            Toast.makeText(this, "Ringtone Saved", Toast.LENGTH_SHORT).show();
        }
        public void function2(int id){
            Toast.makeText(this, "Notification Saved", Toast.LENGTH_SHORT).show();
        }




    boolean saveas(int sound1){
         byte[] buffer=null;
         InputStream fIn = getBaseContext().getResources().openRawResource(sound1);
         int size=36462;

         try {
          size = fIn.available();
          buffer = new byte[size];
          fIn.read(buffer);
          fIn.close();
         } catch (IOException e) {
          // TODO Auto-generated catch block
          return false;
         }

         String path="/sdcard/media/audio/ringtones/";
         String filename="sound1.ogg";

         boolean exists = (new File(path)).exists();
         if (!exists){new File(path).mkdirs();}

         FileOutputStream save;
         try {
          save = new FileOutputStream(path+filename);
          save.write(buffer);
          save.flush();
          save.close();
         } catch (FileNotFoundException e) {
          // TODO Auto-generated catch block
          return false;
         } catch (IOException e) {
          // TODO Auto-generated catch block
          return false;
         }    

         sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename)));

         File k = new File(path, filename);

         ContentValues values = new ContentValues();
         values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
         values.put(MediaStore.MediaColumns.TITLE, "sound1");
         values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");
         values.put(MediaStore.Audio.Media.ARTIST, "we");
         values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
         values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
         values.put(MediaStore.Audio.Media.IS_ALARM, true);
         values.put(MediaStore.Audio.Media.IS_MUSIC, false);

         //Insert it into the database
         this.getContentResolver().insert(MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()), values);

         return false;}

};

4

2 に答える 2

2

サウンド ファイルを .ogg から .mp3 に変換してみてください。私の経験では、メディア プレーヤーは .ogg ファイルを再生できません。あなたがそれを修正すれば、それはうまくいくはずです。

于 2011-08-10T20:17:43.593 に答える
0

アクセス許可に関係している可能性があります (データ ストレージのアクセス許可が必要な場合があります)。

于 2012-03-29T20:16:26.740 に答える