2013-05-20 5 views
2

나는 android app development에 익숙하지 만 JAVA와 일반적으로 프로그래밍에 대한 지식이있다. 앤드 로이드 (Google Play 뮤직과 같은)의 기본 음악 플레이어에 음악 파일을 넣을 수있는 Android 용 앱을 작성하려고합니다. 내 앱은 언제 어떤 노래를 재생할지 결정하지만 본격적인 뮤직 플레이어 앱을 쓰고 싶지는 않습니다. 난 그냥 기존 플레이어 애플 리케이션에 새로운 음악을 공급하고 싶다.앱을 통해 기본 Android 음악 플레이어에 음악을 대기열에 넣으려면?

나는 음악 플레이어에 콘텐츠를 제공하고 아마도 플레이어 자체를 제어 할 수있는 "응용 프로그램 간"통신 (아마도 의도를 사용하고 있습니까?)과 같은 것을 찾고 있습니다.

안드로이드에 이러한 기능이 있는지 확실하지 않아 다른 대안을 환영합니다. 또한 문제를 제대로 설명하지 않았다면 알려 주시기 바랍니다.

답변

1

인 텐트는 Java에서 직접적인 아날로그가없는 Android의 매우 강력한 기능입니다. 당신이 사용하고자하는 것은 암묵적인 의도로 알려진 메커니즘입니다. 일] 적으로 한 활동을 다른 활동에서 실행하면 의도를 작성하고 시작할 활동을 지정합니다. 묵시적 인 텐트를 사용하면 작업 (Intent.ACTION_VIEW)과 데이터 (음악 파일을 가리키는 URI)를 제공합니다. 암시 적 인 텐트를 사용하면 어떤 Activity가 처리를 수행 할 것인지 미리 알지 못해도 처리 할 수 ​​있습니다.

의도를 으로 전달하면 OS는 가능한 가장 좋은 방법으로 데이터를 분석하려고 시도합니다. 일반적으로 데이터를 처리 할 수있는 앱 목록이 표시됩니다. 사용자가 적절한 앱을 선택하면 해당 앱이 인 텐트를 처리하여 음악 파일을 재생합니다. 잠재적으로 데이터를 처리 할 수있는 서비스로 등록한 모든 앱이 목록에 표시됩니다. 인 텐트를 지나면 사용자의 작업이 백그라운드로 진행되고 인 텐트를 처리하는 응용 프로그램이 포 그라운드로 이동합니다.

사용자가 활동의 의도를 처리하기 위해 앱을 선택하면 해당 앱은 사용자가 자신의 앱 데이터를 삭제할 때까지 활동별로 해당 종류의 의도를 처리하는 데 항상 사용됩니다.

official doc을보고 나서 더 구체적인 문제가있을 때 새로운 질문을하십시오. 도움말 MarsAtomic에 대한

package com.marsatomic.intentimplicitdemo; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity 
{ 
    public final static Uri URI = Uri.parse("http://www.marsatomic.com"); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button buttonConnect = (Button)findViewById(R.id.button_connect); 
     buttonConnect.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       Intent i = new Intent(Intent.ACTION_VIEW, URI); 
       startActivity(i); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 
+0

감사 :

는 여기에 URL을 엽니 다되는 브라우저 모르게 개방하는 매우 간단한 암시 적 의도 예를 보여주는 코드 샘플입니다. 내 앱이 파일을 재생해야 할 때마다 어떤 앱을 선택할지를 사용자에게 묻지 않고 대상 앱을 미리 결정할 수 있습니까? 또한, 나는 꽤 구체적인 문제가 있다고 생각합니다. 내 앱이 뮤직 플레이어를 제어하고 콘텐츠를 피드에 제공하기를 원한다. 내 앱이 실행되기 시작하면 특정 음악 파일을로드하고 뮤직 플레이어에 넣고 음악 플레이어를 시작해야합니다. 또한, 내 앱을 독립 뮤직 플레이어로 만들어서이 작업을 수행 할 수 있음을 알고 있습니다. 음악 플레이어 작성을 피할 수있는 대체 솔루션을 찾고 있습니다. –

+0

내 대답에 세 번째 단락을 추가하여 명확하게 설명합니다. 암시 적 의도를 사용하면 절대적으로 음악 플레이어를 쓰는 것을 피할 수 있습니다. 귀하의 질문에 대한 답변을 얻으려면 미래의 독자를 위해 답변을 "수락 됨"으로 표시하고 새 질문에 추가로 구체적인 후속 문의를하십시오. – MarsAtomic

+0

이 솔루션을 사용하면 Music Player를 사용하여 URI를 열 수 있습니다. 또한 내 앱 (재생/일시 정지/정지 등)에서 음악 플레이어를 제어하는 ​​방법을 찾고 있습니다. –