2012-05-08 7 views
0

私はAndroidの初心者です。EC2とS3(Amazon Web Services)を操作するアプリケーションを開発する必要があります。私はVirtualBoxのUbuntu 10.04でEclipse Indigoを使用しています。 Android用SDKをインストールし、新しいプロジェクトを作成して、これらのjarを追加しました。AndroidでAmazon EC2を操作するのが難しい

-aws-android-sdk-1.2.2-ec2.jar -aws-android-sdk-1.2.2-s3.jar -aws-のAndroid-SDK-1.2.2-debug.jarも

私はこのエラーを得た:ここ

Could not find method com.amazonaws.services.ec2.AmazonEC2Client.describeRegions, referenced from method app.workman.Ec2Activity.onCreate.

は、私の活動のコードです:ここで

public class Ec2Activity extends Activity{ 
private AmazonClientManager acm; 
private AmazonEC2Client ec2; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ec2); 

    acm = new AmazonClientManager(); 

    if (this.acm.hasCredentials()){ 

    ec2 = acm.ec2(); 

    System.out.println(ec2.describeRegions()); 
    } 
    } 
} 

コードですAmazonClientManのager.java:

public class AmazonClientManager { 
private static final String LOG_TAG = "AmazonClientManager"; 

private AmazonS3Client s3Client = null; 
private AmazonEC2Client ec2Client = null; 

public AmazonClientManager() { 
} 

public AmazonS3Client s3() { 
    validateCredentials(); 
    return s3Client; 
} 

public AmazonEC2Client ec2() { 
    validateCredentials(); 
    return ec2Client; 
} 

public boolean hasCredentials() { 
    return PropertyLoader.getInstance().hasCredentials(); 
} 

public void validateCredentials() { 
    if (s3Client == null || ec2Client == null) {   
     Log.i(LOG_TAG, "Creating New Clients."); 

//   AWSCredentials credentials = new BasicAWSCredentials(PropertyLoader.getInstance().getAccessKey(), PropertyLoader.getInstance().getSecretKey()); 
     AWSCredentials credentials = new PropertiesCredentials(this.getClass().getResourceAsStream("AwsCredentials.properties")); 

     s3Client = new AmazonS3Client(credentials); 
     ec2Client = new AmazonEC2Client(credentials); 
    } 
} 

public void clearClients() { 
    s3Client = null; 
    ec2Client = null; 
} 
} 

ありがとうございます。

+0

私はuがここにアマゾンのデモプロジェクトamazons3client()関数は、この例を取得すると思いますあらかじめ定義された関数であるuがこの –

答えて

0

このコードはamazon s3です。これはうまくいきます。私はAWS-アンドロイド-SDK-1.2.1-debug.jarも追加これが唯一の

public class AWSTestActivity extends ListActivity { 
/** Called when the activity is first created. */ 
AmazonS3Client s3Client; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    AWSCredentials credentials = new BasicAWSCredentials(
      "aKey", 
      "sKey"); 
    s3Client = new AmazonS3Client(credentials); 

    List buckets = s3Client.listBuckets(); 

    List<String> bucketNames = new ArrayList<String>(buckets.size()); 
    Iterator<Bucket> bIter = buckets.iterator(); 
    while (bIter.hasNext()) { 
     bucketNames.add((bIter.next().getName())); 
    } 

    List<String> ls=new ArrayList<String>(); 
    ListObjectsRequest listObjectsRequest = new ListObjectsRequest(); 

    int keyCount = 1; 


     String path=""; 
      listObjectsRequest.setBucketName(bucketNames.get(0)); 
    //     listObjectsRequest.setPrefix(Key); 
      ObjectListing listing = s3Client.listObjects(listObjectsRequest); 
      List<S3ObjectSummary> objectSummaries1 = listing 
         .getObjectSummaries(); 
      ListIterator<S3ObjectSummary> listIterator = objectSummaries1 
         .listIterator(); 
       while (listIterator.hasNext()) { 
        path = listIterator.next().getKey(); 
        keyCount++; 
        ls.add(path); 
    //      if(folder.endsWith("_$folder$")){} 
    //      else{ 
    //        
//       ls.add(folder.replace(Key+"/", "")); 
    //      } 

    } 



    setListAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, bucketNames)); 



} 
protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     Object o = this.getListAdapter().getItem(position); 
     String pen = o.toString(); 
     Toast.makeText(this, "Backet Name " + " " + pen, Toast.LENGTH_LONG).show(); 
     List<String> ls=new ArrayList<String>(); 
     ListObjectsRequest listObjectsRequest = new ListObjectsRequest(); 

     int keyCount = 1; 


      String path=""; 
       listObjectsRequest.setBucketName(pen); 
    //     listObjectsRequest.setPrefix(Key); 
       ObjectListing listing = s3Client.listObjects(listObjectsRequest); 
       List<S3ObjectSummary> objectSummaries1 = listing 
          .getObjectSummaries(); 
       ListIterator<S3ObjectSummary> listIterator = objectSummaries1 
          .listIterator(); 
        while (listIterator.hasNext()) { 
         path = listIterator.next().getKey(); 
         keyCount++; 
    //       ls.add(path); 
         if(path.endsWith("_$folder$")){ 
    //         ls.add(path.replace("_$folder$", "")); 
         } 
         else{ 

          ls.add(path.replace(path+"/", "")); 
         } 
         setListAdapter(new ArrayAdapter<String>(this, 
           android.R.layout.simple_list_item_1, ls)); 
     } 
        System.out.println("path::::::"+ls.toString()); 


     } 



} 
+0

感謝のためBasicAWSCredentialsクラスを使用することができますこの回答は役に立ちましたが、うまくいきませんでした。 "05-08 11:22:56.914:E/AndroidRuntime(2463):java.lang.NoClassDefFoundError:com.amazonaws.auth.PropertiesCredentials"というエラーが発生しました。 私はちょうど 'aws-android-sdk-1.2.2-debug.jar'を使用しています。 ありがとうございます。 – murilomsm

+0

BasicAWSCredentialsのIdem: "05-08 11:36:14.528:E/AndroidRuntime(2520):java.lang.NoClassDefFoundError:com.amazonaws.auth.BasicAWSCredentials"。 – murilomsm

+0

私は理解できません...瓶はビルドパスにありますが、記述されたクラスは認識されません!私はもっ​​と助けが必要です.... – murilomsm