我正在尝试在Android Studio中编写一个可打开多个音乐文件并存储其路径的应用程序。目前,我正在做的是一次加载一个文件,而没有任何问题。例如,以下代码显示了我的onclicklister(用于加载按钮)和相关代码。此示例已简化了一些代码。用户单击应用程序中的加载按钮,然后使用他们安装的任何文件管理器来选择文件,然后将Uri传递回我的应用程序。一切都很好。但是,是否可以选择多个文件并将它们作为文件数组传递回我的应用程序?因此,用户可以选择5或6而不是选择单个音频文件。
如果是这样,您该怎么做?非常感谢。
反正我是什么
final View.OnClickListener mGlobal_OnClickListener = new View.OnClickListener() {
public void onClick(final View v) {
int resID2 = v.getId();
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*");
try {
startActivityForResult(intent,resID2); }
catch (Exception e) {
Toast.makeText(getApplicationContext(), "Please install a file manager",Toast.LENGTH_LONG).show();
}
}
};
public void onActivityResult(int requestCode, int resultCode, Intent result) {
if (resultCode == RESULT_OK)
{
Uri data = result.getData();
String thePath = data.getPath();
// Do something with the file path
}
}
Run Code Online (Sandbox Code Playgroud) 快速提问,因为我似乎错过了一些东西。
我有一个媒体播放器类,我想用它来播放 mp3。
我这样设置属性...
AudioAttributes aa = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setFlags(FLAG_AUDIBILITY_ENFORCED)
.build(
mediaplayer.setAudioAttributes(aa);
Run Code Online (Sandbox Code Playgroud)
但是,当曲目播放时,它使用系统(铃声)音量作为主音量控制。不是我所期望的媒体量。如果我错过了设置标志......
.setFlags(FLAG_AUDIBILITY_ENFORCED)
Run Code Online (Sandbox Code Playgroud)
它按预期工作并使用媒体音量。为什么设置上面的标志会改变设备上控制播放的音量?
谢谢!
好的,这是一个奇怪的,我希望有人可以向我解释.
我有一个自定义按钮布局,在按钮中间创建一个带有圆形进度条的按钮.我的XML代码如下.然而,我无法解决的是,它ProgressBar似乎出现在按钮后面.如果我将按钮背景设置为透明以外的任何其他内容,则无法看到进度条.随着按钮背景透明,我可以看到ProgressBar它,但它仍然出现在按钮文本后面.我的理解是视图按照添加的顺序出现.我甚至尝试将视图设置在顶部(view.bringToFront();)并且我尝试删除视图并重新创建它.
为什么进度条出现在按钮后面,我该怎么做才能解决它?
非常感谢
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@android:color/holo_blue_bright"
android:padding="2dp">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:text="Button"
android:gravity="center"
android:textColor="@android:color/white"
android:singleLine="true"
android:clickable="false">
</Button>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_centerInParent="true"
android:visibility="visible"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
代码使用上面的布局
private void setupTableLayout(int NumberOfRows, int NumberOfButtons){
TableLayout.LayoutParams tableParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT);
TableRow.LayoutParams rowParams = new TableRow.LayoutParams(0, android.widget.TableRow.LayoutParams.MATCH_PARENT, 3f);
TableLayout tableLayout = (TableLayout) findViewById(R.id.thetablelayout);
tableLayout.removeAllViews();
for (int i = 0; i < NumberOfRows; i++) {
TableRow tableRow = new TableRow(this);
tableRow.setLayoutParams(tableParams);
RelativeLayout …Run Code Online (Sandbox Code Playgroud) 真的没有问题我知道,但我试图理解方法和线程如何作为一个业余程序员.我确信这对我来说是一个根本缺乏理解,但希望一些好人可以让我直截了当.
我想知道的是,如果您使用多个线程多次调用相同的方法,您是否创建了每个方法的沙盒版本,这些版本彼此独立地操作,或者它们可以相互干扰.例如,我在下面敲了一些非常简单的代码来试图说明我的意思.
因此,在示例中,我们有一个单击按钮时调用的方法.它需要两个数字并将它们输入到第二个方法中,将它们加在一起并返回结果.这似乎是直截了当的.但想象一下,我们想用相同的方法进行另一次计算,但我们不想等待第一次计算完成.我们可以调用在单独的线程上添加数字的方法,这样它就不会阻止UI线程.凉.好的,但如果我们这样做两次怎么办?还是三次?
我想问的是,当第一次调用"doSum"时,传入它的数字是10和20.代码在一个单独的线程上运行该方法并应该返回答案30.第二次调用它数字是30和50,结果应该是80.如果由于某种原因第一个线程中的计算仍在继续,当我第二次调用相同的方法时它会被覆盖吗?结果是否有可能被归还为80或140?
这对任何人都有意义吗?
public void onbuttonclicked(View v) {
int number1;
int number2;
int result1, result2, result3;
//first callculation --------------------------------------
number1 = 10;
number2 = 20;
Thread t1 = new Thread(new Runnable() {
public void run() {
result1 = doSum(number1, number2);
}
});
t1.start();
//second callculation -----------------------------------
number1 = 30;
number2 = 50;
Thread t2 = new Thread(new Runnable() {
public void run() {
result2 = doSum(number1, number2);
}
});
t2.start();
//third callculation -----------------------------------------
number1 = 60;
number2 = …Run Code Online (Sandbox Code Playgroud) 好的 - 这个让我有点疯狂.
我下载了Android Studio 0.8.14.我用它创建了一个测试应用程序,一切正常.
从那时起,我显然已经做了一些事情,因为我创建的每个新应用程序在编译并运行时都缺少操作栏中的应用程序图标.
如果我在活动视图页面上更改主题,我可以在预览中看到它,但是当我在手机上运行时没有显示任何内容.
我创建的原始应用程序仍然显示图标.
我的最小SDK为9,目标为21.
任何人的想法?
谢谢
只是添加..基于建议我已将最低SDK设置为11并尝试以下但未成功使用...
ActionBar actionBar = getActionBar();
actionBar.setIcon(R.drawable.ic_launcher);
Run Code Online (Sandbox Code Playgroud)
这导致我的应用程序在运行时崩溃(在4.4上)
ActionBar actionBar = getSupportActionBar();
actionBar.setIcon(R.drawable.ic_launcher);
Run Code Online (Sandbox Code Playgroud)
什么也没做.
我从创建方法的活动中调用这些.
提前致谢